home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 23 / Amiga Format AFCD23 (Feb 1998, Issue 107).iso / -seriously_amiga- / shareware / programming / blitz / efmuilibsrc / blitzlibs / userlibs / efmuilib.asc
Text File  |  1997-12-06  |  70KB  |  2,838 lines

  1. ;**************************************************
  2. ;*                                                *
  3. ;*            EFMUILib Version 1.0                *
  4. ;*                                                *
  5. ;* (c) 1997 by VIVID Imagination                  *
  6. ;**************************************************
  7. ;
  8. ;Commands list:
  9. ;~~~~~~~~~~~~~~
  10. ;
  11. ;MUISetMaximumTags max
  12. ;
  13. ;MUIApplicationTitle title$
  14. ;MUIApplicationVersion version$
  15. ;MUIApplicationCopyright copyright$
  16. ;MUIApplicationAuthor author$
  17. ;MUIApplicationDescription description$
  18. ;MUIApplicationBase base$
  19. ;MUIAddApplicationTags &TagList | Tag,Value [,Tag,Value...]
  20. ;MUICreateApplication
  21. ;MUIRemoveApplication
  22. ;MUIApplicationLoc
  23. ;MUIApplicationObj To MUIObject#
  24. ;MUIAddSubWindow MUIObject#
  25. ;
  26. ;MUIFreeObject MUIObject#
  27. ;
  28. ;MUICreateWindow MUIObject#,title$ [,id$ [,MUIObject#] ]
  29. ;MUIOpenWindow MUIObject#
  30. ;MUICloseWindow MUIObject#
  31. ;
  32. ;MUIObjLoc (MUIObject#)
  33. ;
  34. ;MUIRequest To MUIObject#,Flags,Title$,Gadgets$,Format$  [,Param...]
  35. ;
  36. ;MUIAddTags MUIObject#,&TagList | MUIObject#,Tag,Value [,Tag,Value...]
  37. ;
  38. ;MUINewObject MUIObject#,Class$,&TagList | MUIObject#,Class$,Tag,Value [,Tag,Value...]
  39. ;MUIMakeObject MUIObject#,Type,&TagList | MUIObject#,Type,Tag,Value [,Tag,Value...]
  40. ;
  41. ;MUIHVSpace MUIObject#
  42. ;MUIHSpace MUIObject#,x
  43. ;MUIVSpace MUIObject#,x
  44. ;MUIString MUIObject#,Contents$,MaxLen
  45. ;MUIKeyString MUIObject#,Contents,MaxLen,ControlChar$
  46. ;MUICheckMark MUIObject#,Selected
  47. ;MUIKeyCheckMark MUIObject#,Selected,ControlChar$
  48. ;MUISimpleButton MUIObject#,Name$
  49. ;MUIKeyButton MUIObject#,Name$,Key$
  50. ;MUICycle MUIObject#,  Entry$ [,Entry$...] | *Array
  51. ;MUIKeyCycle MUIObject#,Key$,  Entry$ [,Entry$...] | *Array
  52. ;MUIRadio MUIObject#,Name$,  Entry$ [,Entry$...] | *Array
  53. ;MUIKeyRadio MUIObject#,Key$,Name$,  Entry$ [,Entry$...] | *Array
  54. ;MUISlider MUIObject#,Min,Max,Level
  55. ;MUIKeySlider MUIObject#,Min,Max,Level,Key$
  56. ;MUILabel MUIObject#,Label$,Flags
  57. ;MUINumericButton MUIObject#,Format$,Min,Max
  58. ;MUIList MUIObject#,MaxEntries,Columns,Format$  [,*Array | Entry$ [,Entry$...]]
  59. ;MUIListview To MUIObject#,MUIObject#
  60. ;MUIPopButton MUIObject#,Image
  61. ;MUIImageButton MUIObject#,Shape#
  62. ;
  63. ;MUIAddObjHGroup To MUIObject#,MUIObject#
  64. ;MUICreateHGroup MUIObject#
  65. ;MUIAddObjVGroup To MUIObject#,MUIObject#
  66. ;MUICreateVGroup MUIObject#
  67. ;MUIAddObjPage To MUIObject#,MUIObject#
  68. ;MUICreatePage MUIObject#  ,Page1$ [,Page2$...] | &Page$(0)
  69. ;
  70. ;MUIInsertSingle MUIObject#,Position,  Entry$ [,Entry$...] | *Array
  71. ;MUIRemoveSingle MUIObject#,Position
  72. ;MUIRedrawSingle MUIObject#,Position
  73. ;MUIListTitle MUIObject#,  Title$ [,Title$...] | *Array
  74. ;
  75. ;MUISet MUIObject#,&TagList | MUIObject#,Attr,Value [,Attr,Value...]
  76. ;MUIGet (MUIObject#,Attribute)
  77. ;
  78. ;MUIDoMethod MUIObject#,  Method,Tag [,Tag] | &TagList
  79. ;MUINotify MUIObject#,Tag,Value,MUIObject#,  Tag [,Tag...] | &TagList
  80. ;MUIEvent
  81. ;MUIWaitEvent
  82. ;
  83.  
  84. ;*************
  85. ;*** TO DO ***
  86. ;*************
  87.  
  88. ;
  89. ; Nothing (atm)
  90. ;
  91.  
  92. ;************
  93. ;*** BUGS ***
  94. ;************
  95.  
  96. ;
  97. ; No bugs reported
  98. ;
  99.  
  100. ;****************
  101. ;*** Lib Init ***
  102. ;****************
  103.  
  104. .libinit:
  105.  
  106. #bbmuilib=8
  107.  
  108. !libheader{#bbmuilib,init,0,finit,0}
  109.  
  110. !dumtoke{"MUIObject","A MUI object",_toke}
  111.  
  112. !astatement
  113. !args        {#long}
  114. !libs
  115. !subs        {_setmaxtags,0,0}
  116. !name        {"MUISetMaximumTags","max"}
  117.  
  118. !astatement
  119. !args        {#string}
  120. !libs
  121. !subs        {_apptitle,0,0}
  122. !name        {"MUIApplicationTitle","title$"}
  123.  
  124. !astatement
  125. !args        {#string}
  126. !libs
  127. !subs        {_appver,0,0}
  128. !name        {"MUIApplicationVersion","ver$"}
  129.  
  130. !astatement
  131. !args        {#string}
  132. !libs
  133. !subs        {_appcr,0,0}
  134. !name        {"MUIApplicationCopyright","copyright$"}
  135.  
  136. !astatement
  137. !args        {#string}
  138. !libs
  139. !subs        {_appauthor,0,0}
  140. !name        {"MUIApplicationAuthor","author$"}
  141.  
  142. !astatement
  143. !args        {#string}
  144. !libs
  145. !subs        {_appdesc,0,0}
  146. !name        {"MUIApplicationDescription","desc$"}
  147.  
  148. !astatement
  149. !args        {#string}
  150. !libs
  151. !subs        {_appbase,0,0}
  152. !name        {"MUIApplicationBase","base$"}
  153.  
  154.  
  155. !astatement
  156. ;
  157. !repargs     {0,1,#long}
  158. !libs
  159. !subs        {_addapptags,0,0}
  160. ;
  161. !args        {#long}
  162. !libs
  163. !subs        {_addapptagsa,0,0}
  164. ;
  165. !name        {"MUIAddApplicationTags","&TagList | Tag,Value [,Tag,Value...]"}
  166.  
  167.  
  168. !acommand    {#long}
  169. !args
  170. !libs
  171. !subs        {_createapp,0,0}
  172. !name        {"MUICreateApplication",""}
  173.  
  174. !astatement
  175. !args
  176. !libs
  177. !subs        {_removeapp,0,0}
  178. !name        {"MUIRemoveApplication",""}
  179.  
  180. !afunction   {#long}
  181. !args
  182. !libs
  183. !subs        {_apploc,0,0}
  184. !name        {"MUIApplicationLoc",""}
  185.  
  186. !acommand    {#long}
  187. !args        {#word}
  188. !libs        {#bbmuilib,#ia3|#pd0}
  189. !subs        {_appobj,0,0}
  190. !name        {"MUIApplicationObj","To MUIObject#"}
  191.  
  192.  
  193. !acommand    {#long}
  194. !args        {#word}
  195. !libs        {#bbmuilib,#ia3|#pd0}
  196. !subs        {_appwin,0,0}
  197. !name        {"MUIAddSubWindow","MUIObject#"}
  198.  
  199. !astatement
  200. !args        {#word}
  201. !libs        {#bbmuilib,#ia3|#pd0}
  202. !subs        {_freeobj,0,0}
  203. !name        {"MUIFreeObject","MUIObject#"}
  204.  
  205.  
  206. !acommand    {#long}
  207. ;
  208. !args        {#word,#string,#string,#word}
  209. !libs        {#bbmuilib,#ia3|#pd0,#bbmuilib,#ia0|#pd3}
  210. !subs        {_createwin,0,0}
  211. ;
  212. !args        {#word,#string,#string}
  213. !libs        {#bbmuilib,#ia3|#pd0}
  214. !subs        {_createwin1,0,0}
  215. ;
  216. !args        {#word,#string}
  217. !libs        {#bbmuilib,#ia3|#pd0}
  218. !subs        {_createwin2,0,0}
  219. ;
  220. !name        {"MUICreateWindow","MUIObject#,title$ [,id$ [,MUIObject#]]"}
  221.  
  222. !acommand    {#word}
  223. !args        {#word}
  224. !libs        {#bbmuilib,#ia3|#pd0,#intuitionlib,#la6}
  225. !subs        {_openwin,0,0}
  226. !name        {"MUIOpenWindow","MUIObject#"}
  227.  
  228. !acommand    {#word}
  229. !args        {#word}
  230. !libs        {#bbmuilib,#ia3|#pd0,#intuitionlib,#la6}
  231. !subs        {_closewin,0,0}
  232. !name        {"MUICloseWindow","MUIObject#"}
  233.  
  234. !astatement
  235. ;
  236. !repargs     {1,1,#word,#long}
  237. !libs        {#bbmuilib,#ia3|#pd0}
  238. !subs        {_addobjtags,0,0}
  239. ;
  240. !args        {#word,#long}
  241. !libs        {#bbmuilib,#ia3|#pd0}
  242. !subs        {_addobjtagsa,0,0}
  243. ;
  244. !name        {"MUIAddTags","MUIObject#,&TagList | MUIObject#,Tag,Value [,Tag,Value...]"}
  245.  
  246.  
  247. !acommand    {#long}
  248. ;
  249. !repargs     {2,1,#word,#string,#long}
  250. !libs        {#bbmuilib,#ia3|#pd0}
  251. !subs        {_muinewobj,0,0}
  252. ;
  253. !args        {#word,#string,#long}
  254. !libs        {#bbmuilib,#ia3|#pd0}
  255. !subs        {_muinewobja,0,0}
  256. ;
  257. !name        {"MUINewObject","MUIObject#,Class$,&TagList | MUIObject#,Class$,Tag,Value [,Tag,Value...]"}
  258.  
  259. !acommand    {#long}
  260. ;
  261. !repargs     {2,1,#word,#long,#long}
  262. !libs        {#bbmuilib,#ia3|#pd0}
  263. !subs        {_muimakeobj,0,0}
  264. ;
  265. !args        {#word,#long,#long}
  266. !libs        {#bbmuilib,#ia3|#pd0}
  267. !subs        {_muimakeobja,0,0}
  268. ;
  269. !name        {"MUIMakeObject","MUIObject#,Type,&TagList | MUIObject#,Type,Tag,Value [,Tag,Value...]"}
  270.  
  271. !acommand    {#long}
  272. !args        {#word}
  273. !libs        {#bbmuilib,#ia3|#pd0}
  274. !subs        {_hvspace,0,0}
  275. !name        {"MUIHVSpace","MUIObject#"}
  276.  
  277. !acommand    {#long}
  278. !args        {#word,#long}
  279. !libs        {#bbmuilib,#ia3|#pd0}
  280. !subs        {_hspace,0,0}
  281. !name        {"MUIHSpace","MUIObject#,x"}
  282.  
  283. !acommand    {#long}
  284. !args        {#word,#long}
  285. !libs        {#bbmuilib,#ia3|#pd0}
  286. !subs        {_vspace,0,0}
  287. !name        {"MUIVSpace","MUIObject#,x"}
  288.  
  289. !acommand    {#long}
  290. !args        {#word,#string,#long}
  291. !libs        {#bbmuilib,#ia3|#pd0}
  292. !subs        {_string,0,0}
  293. !name        {"MUIString","MUIObject#,Contents$,MaxLen"}
  294.  
  295. !acommand    {#long}
  296. !args        {#word,#string,#long,#string}
  297. !libs        {#bbmuilib,#ia3|#pd0}
  298. !subs        {_keystring,0,0}
  299. !name        {"MUIKeyString","MUIObject#,Contents$,MaxLen,ControlChar$"}
  300.  
  301. !acommand    {#long}
  302. !args        {#word,#long}
  303. !libs        {#bbmuilib,#ia3|#pd0}
  304. !subs        {_checkmark,0,0}
  305. !name        {"MUICheckMark","MUIObject#,Selected"}
  306.  
  307. !acommand    {#long}
  308. !args        {#word,#long,#string}
  309. !libs        {#bbmuilib,#ia3|#pd0}
  310. !subs        {_keycheckmark,0,0}
  311. !name        {"MUIKeyCheckMark","MUIObject#,Selected,ControlChar$"}
  312.  
  313. !acommand    {#long}
  314. !args        {#word,#string}
  315. !libs        {#bbmuilib,#ia3|#pd0}
  316. !subs        {_simplebutton,0,0}
  317. !name        {"MUISimpleButton","MUIObject#,Name$"}
  318.  
  319. !acommand    {#long}
  320. !args        {#word,#string,#string}
  321. !libs        {#bbmuilib,#ia3|#pd0}
  322. !subs        {_keybutton,0,0}
  323. !name        {"MUIKeyButton","MUIObject#,Name$,Key$"}
  324.  
  325. !acommand    {#long}
  326. ;
  327. !args        {#word,#long}
  328. !libs        {#bbmuilib,#ia3|#pd0}
  329. !subs        {_cyclea,0,0}
  330. ;
  331. !repargs     {1,1,#word,#string}
  332. !libs        {#bbmuilib,#ia3|#pd0}
  333. !subs        {_cycle,0,0}
  334. ;
  335. !name        {"MUICycle","MUIObject#,  Entry$ [,Entry$...] | *Array"}
  336.  
  337. !acommand    {#long}
  338. ;
  339. !args        {#word,#string,#long}
  340. !libs        {#bbmuilib,#ia3|#pd0}
  341. !subs        {_keycyclea,0,0}
  342. ;
  343. !repargs     {2,1,#word,#string,#string}
  344. !libs        {#bbmuilib,#ia3|#pd0}
  345. !subs        {_keycycle,0,0}
  346. ;
  347. !name        {"MUIKeyCycle","MUIObject#,Key$,  Entry$ [,Entry$...] | *Array"}
  348.  
  349. !acommand    {#long}
  350. ;
  351. !args        {#word,#string,#long}
  352. !libs        {#bbmuilib,#ia3|#pd0}
  353. !subs        {_radioa,0,0}
  354. ;
  355. !repargs     {2,1,#word,#string,#string}
  356. !libs        {#bbmuilib,#ia3|#pd0}
  357. !subs        {_radio,0,0}
  358. ;
  359. !name        {"MUIRadio","MUIObject#,Name$,  Entry$ [,Entry$...] | *Array"}
  360.  
  361. !acommand    {#long}
  362. ;
  363. !args        {#word,#string,#string,#long}
  364. !libs        {#bbmuilib,#ia3|#pd0}
  365. !subs        {_keyradioa,0,0}
  366. ;
  367. !repargs     {3,1,#word,#string,#string,#string}
  368. !libs        {#bbmuilib,#ia3|#pd0}
  369. !subs        {_keyradio,0,0}
  370. ;
  371. !name        {"MUIKeyRadio","MUIObject#,Name$,Key$,  Entry$ [,Entry$...] | *Array"}
  372.  
  373. !acommand    {#long}
  374. !args        {#word,#long,#long,#long}
  375. !libs        {#bbmuilib,#ia3|#pd0}
  376. !subs        {_slider,0,0}
  377. !name        {"MUISlider","MUIObject#,Min,Max,Level"}
  378.  
  379. !acommand    {#long}
  380. !args        {#word,#long,#long,#long,#string}
  381. !libs        {#bbmuilib,#ia3|#pd0}
  382. !subs        {_keyslider,0,0}
  383. !name        {"MUIKeySlider","MUIObject#,Min,Max,Level,Key$"}
  384.  
  385. !acommand    {#long}
  386. !args        {#word,#string,#long}
  387. !libs        {#bbmuilib,#ia3|#pd0}
  388. !subs        {_label,0,0}
  389. !name        {"MUILabel","MUIObject#,Label$,Flags"}
  390.  
  391.  
  392. !acommand    {#long}
  393. !args        {#word,#word}
  394. !libs        {#bbmuilib,#ia3|#pd0,#bbmuilib,#ia2|#pd1}
  395. !subs        {_addobjhgroup,0,0}
  396. !name        {"MUIAddObjHGroup","To MUIObject#,MUIObject#"}
  397.  
  398. !acommand    {#long}
  399. !args        {#word}
  400. !libs        {#bbmuilib,#ia3|#pd0}
  401. !subs        {_createhgroup,0,0}
  402. !name        {"MUICreateHGroup","MUIObject#"}
  403.  
  404. !acommand    {#long}
  405. !args        {#word,#word}
  406. !libs        {#bbmuilib,#ia3|#pd0,#bbmuilib,#ia2|#pd1}
  407. !subs        {_addobjvgroup,0,0}
  408. !name        {"MUIAddObjVGroup","To MUIObject#,MUIObject#"}
  409.  
  410. !acommand    {#long}
  411. !args        {#word}
  412. !libs        {#bbmuilib,#ia3|#pd0}
  413. !subs        {_createvgroup,0,0}
  414. !name        {"MUICreateVGroup","MUIObject#"}
  415.  
  416.  
  417. !astatement
  418. ;
  419. !args        {#word,#long}
  420. !libs        {#bbmuilib,#ia3|#pd0,#intuitionlib,#la6}
  421. !subs        {_muiseta,0,0}
  422. ;
  423. !repargs     {1,1,#word,#long}
  424. !libs        {#bbmuilib,#ia3|#pd0,#intuitionlib,#la6}
  425. !subs        {_muiset,0,0}
  426. ;
  427. !name        {"MUISet","MUIObject#,&TagList | MUIObject#,Attr,Value [,Attr,Value...]"}
  428.  
  429. !afunction   {#long}
  430. !args        {#word,#long}
  431. !libs        {#bbmuilib,#ia3|#pd0,#intuitionlib,#la6}
  432. !subs        {_muiget,0,0}
  433. !name        {"MUIGet","(MUIObject#,Attribute)"}
  434.  
  435.  
  436. !astatement
  437. ;
  438. !repargs     {2,1,#word,#long,#long}
  439. !libs        {#bbmuilib,#ia3|#pd0}
  440. !subs        {_dmethod,0,0}
  441. ;
  442. !args        {#word,#long,#long}
  443. !libs        {#bbmuilib,#ia3|#pd0}
  444. !subs        {_dmethoda,0,0}
  445. ;
  446. !name        {"MUIDoMethod","MUIObject#,Method,  Tag [,Tag...] | &TagList"}
  447.  
  448.  
  449. !astatement
  450. ;
  451. !repargs     {4,1,#word,#long,#long,#word,#long}
  452. !libs        {#bbmuilib,#ia3|#pd0,#bbmuilib,#ia0|#pd3}
  453. !subs        {_notify,0,0}
  454. ;
  455. !args        {#word,#long,#long,#word,#long}
  456. !libs        {#bbmuilib,#ia3|#pd0,#bbmuilib,#ia0|#pd3}
  457. !subs        {_notifya,0,0}
  458. ;
  459. !name        {"MUINotify","MUIObject#,Tag,Value,MUIObject#,  Tag [,Tag...] | &TagList"}
  460.  
  461. !afunction   {#long}
  462. !args
  463. !libs
  464. !subs        {_event,0,0}
  465. !name        {"MUIEvent",""}
  466.  
  467. !afunction   {#long}
  468. !args
  469. !libs
  470. !subs        {_waitevent,0,0}
  471. !name        {"MUIWaitEvent",""}
  472.  
  473. !acommand    {#long}
  474. !args        {#word,#string,#long,#long}
  475. !libs        {#bbmuilib,#ia3|#pd0}
  476. !subs        {_numbutton,0,0}
  477. !name        {"MUINumericButton","MUIObject#,Format$,Min,Max"}
  478.  
  479. !acommand    {#long}
  480. !args        {#word,#word}
  481. !libs        {#bbmuilib,#ia3|#pd0,#bbmuilib,#ia2|#pd1}
  482. !subs        {_addobjpage,0,0}
  483. !name        {"MUIAddObjPage","To MUIObject#,MUIObject#"}
  484.  
  485. !acommand    {#long}
  486. ;
  487. !args        {#word,#long}
  488. !libs        {#bbmuilib,#ia3|#pd0}
  489. !subs        {_createpagea,0,0}
  490. ;
  491. !repargs     {1,1,#word,#string}
  492. !libs        {#bbmuilib,#ia3|#pd0}
  493. !subs        {_createpage,0,0}
  494. ;
  495. !name        {"MUICreatePage","MUIObject#  ,Page1$ [,Page2$...] | &Page$(0)"}
  496.  
  497. !acommand    {#long}
  498. ;
  499. !args        {#word,#long,#long,#string}
  500. !libs        {#bbmuilib,#ia3|#pd0}
  501. !subs        {_listb,0,0}
  502. ;
  503. !args        {#word,#long,#long,#string,#long}
  504. !libs        {#bbmuilib,#ia3|#pd0}
  505. !subs        {_lista,0,0}
  506. ;
  507. !repargs     {4,1,#word,#long,#long,#string,#string}
  508. !libs        {#bbmuilib,#ia3|#pd0}
  509. !subs        {_list,0,0}
  510. ;
  511. !name        {"MUIList","MUIObject#,MaxEntries,Columns,Format$  [,*Array | Entry$ [,Entry$...]]"}
  512.  
  513. !acommand    {#long}
  514. !args        {#word,#word}
  515. !libs        {#bbmuilib,#ia3|#pd0,#bbmuilib,#ia0|#pd1}
  516. !subs        {_listview,0,0}
  517. !name        {"MUIListView","To MUIObject#,MUIObject#"}
  518.  
  519. !afunction   {#long}
  520. !args        {#word}
  521. !libs        {#bbmuilib,#ia3|#pd0}
  522. !subs        {_objloc,0,0}
  523. !name        {"MUIObjLoc","(MUIObject#)"}
  524.  
  525. !acommand    {#long}
  526. ;
  527. !args        {#word,#long,#string,#string,#string}
  528. !libs        {#bbmuilib,#ia3|#pd0}
  529. !subs        {_request,0,0}
  530. ;
  531. !repargs     {5,1,#word,#long,#string,#string,#string,#long}
  532. !libs        {#bbmuilib,#ia3|#pd0}
  533. !subs        {_request,0,0}
  534. ;
  535. !name        {"MUIRequest","To MUIObject#,Flags,Title$,Gadgets$,Format$  [,Param...]"}
  536.  
  537. !acommand    {#long}
  538. !args        {#word,#long}
  539. !libs        {#bbmuilib,#ia3|#pd0}
  540. !subs        {_popbutton,0,0}
  541. !name        {"MUIPopButton","MUIObject#,Image"}
  542.  
  543. !acommand    {#long}
  544. !args        {#word,#word}
  545. !libs        {#bbmuilib,#ia3|#pd0,#shapeslib,#ia0|#pd1}
  546. !subs        {_imagebutton,0,0}
  547. !name        {"MUIImageButton","MUIObject#,Shape#"}
  548.  
  549. !acommand    {#long}
  550. ;
  551. !args        {#word,#long,#long}
  552. !libs        {#bbmuilib,#ia3|#pd0}
  553. !subs        {_insertsinglea,0,0}
  554. ;
  555. !repargs     {2,1,#word,#long,#string}
  556. !libs        {#bbmuilib,#ia3|#pd0}
  557. !subs        {_insertsingle,0,0}
  558. ;
  559. !name        {"MUIInsertSingle","MUIObject#,Position,  Entry$ [,Entry$...] | *Array"}
  560.  
  561. !acommand    {#long}
  562. !args        {#word,#long}
  563. !libs        {#bbmuilib,#ia3|#pd0}
  564. !subs        {_removesingle,0,0}
  565. !name        {"MUIRemoveSingle","MUIObject#,Position"}
  566.  
  567. !acommand    {#long}
  568. !args        {#word,#long}
  569. !libs        {#bbmuilib,#ia3|#pd0}
  570. !subs        {_redrawsingle,0,0}
  571. !name        {"MUIRedrawSingle","MUIObject#,Position"}
  572.  
  573. !acommand    {#long}
  574. ;
  575. !args        {#word,#long}
  576. !libs        {#bbmuilib,#ia3|#pd0,#intuitionlib,#la6}
  577. !subs        {_listtitlea,0,0}
  578. ;
  579. !repargs     {1,1,#word,#string}
  580. !libs        {#bbmuilib,#ia3|#pd0,#intuitionlib,#la6}
  581. !subs        {_listtitle,0,0}
  582. ;
  583. !name        {"MUIListTitle","MUIObject#,  Title$ [,Title$...] | *Array"}
  584.  
  585. _load:!nullsub{0,0,0}
  586. _save:!nullsub{0,0,0}
  587. _use:!nullsub{0,0,0}
  588. _free:!nullsub{_freeobj,0,0}
  589.  
  590. init:!nullsub{_codeinit,0,0}
  591. finit:!nullsub{_codefinit,0,0}
  592.  
  593. !libfin{_toke,_load,_save,_use,_free,30,5}
  594.  
  595. .libfinit
  596.  
  597. ;***************
  598. ;*** DEFINES ***
  599. ;***************
  600.  
  601.  
  602. #_LVOOpenLibrary=-552
  603. #_LVOCloseLibrary=-414
  604.  
  605. Macro   CALLEXEC
  606.         MOVEA.l 4,a6
  607.         JSR     _LVO`1(a6)
  608. End Macro
  609.  
  610. #_LVOMUI_NewObjectA=-30         ;(class,tags)(a0,a1)
  611. #_LVOMUI_DisposeObject=-36      ;(obj)(a0)
  612. #_LVOMUI_RequestA=-42           ;(app,win,flags,title,gadgets,format,params)(d0,d1,d2,a0,a1,a2,a3)
  613. #_LVOMUI_AllocAslRequest=-48    ;(type,tags)(d0,a0)
  614. #_LVOMUI_AslRequest=-54         ;(req,tags)(a0,a1)
  615. #_LVOMUI_FreeAslRequest=-60     ;(req)(a0)
  616. #_LVOMUI_Error=-66              ;()()
  617. #_LVOMUI_SetError=-72           ;(errnum)(d0)
  618. #_LVOMUI_GetClass=-78           ;(name)(a0)
  619. #_LVOMUI_FreeClass=-84          ;(cl)(a0)
  620. #_LVOMUI_RequestIDCMP=-90       ;(obj,flags)(a0,d0)
  621. #_LVOMUI_RejectIDCMP=-96        ;(obj,flags)(a0,d0)
  622. #_LVOMUI_Redraw=-102            ;(obj,flags)(a0,d0)
  623. #_LVOMUI_CreateCustomClass=-108 ;(base,supername,supermcc,datasize,dispatcher)(a0,a1,a2,d0,a3)
  624. #_LVOMUI_DeleteCustomClass=-114 ;(mcc)(a0)
  625. #_LVOMUI_MakeObjectA=-120       ;(Type,params)(d0,a0)
  626. #_LVOMUI_Layout=-126            ;(obj,l,t,w,h,flags)(a0,d0,d1,d2,d3,d4)
  627. #_LVOMUI_ObtainPen=-156         ;(mri,spec,flags)(a0,a1,d0)
  628. #_LVOMUI_ReleasePen=-162        ;(mri,pen)(a0,d0)
  629. #_LVOMUI_AddClipping=-168       ;(mri,l,t,w,h)(a0,d0,d1,d2,d3)
  630. #_LVOMUI_RemoveClipping=-174    ;(mri,h)(a0,a1)
  631. #_LVOMUI_AddClipRegion=-180     ;(mri,region)(a0,a1)
  632. #_LVOMUI_RemoveClipRegion=-186  ;(mri,region)(a0,a1)
  633. #_LVOMUI_BeginRefresh=-192      ;(mri,flags)(a0,d0)
  634. #_LVOMUI_EndRefresh=-198        ;(mri,flags)(a0,d0)
  635.  
  636. Macro CALLMUI
  637.         MOVEA.l _MUIBase(pc),a6
  638.         JSR     _LVO`1(a6)
  639. End Macro
  640.  
  641. Macro MUINAME
  642.         Dc.b    "muimaster.library",0
  643. End Macro
  644.  
  645. Macro OPENLIB
  646.         LEA     `1(pc),a1
  647.         MOVEQ   #0,d0
  648.         !CALLEXEC       {OpenLibrary}
  649.         MOVE.l  d0,`2
  650. End Macro
  651.  
  652. Macro CLOSELIB
  653.         MOVEA.l `1(pc),a1
  654.         !CALLEXEC       {CloseLibrary}
  655. End Macro
  656.  
  657.  
  658. NEWTYPE.MUIObject
  659.   adr.l            ;0:Address of the object
  660.   kind.w           ;4:Kind of the object
  661.   tagl.l           ;6:Address of the taglist
  662.   tagp.w           ;10:Pointer of the taglist
  663.   size.w           ;12:Size of the taglist
  664.   special.l        ;14:Special Info
  665.   spesize.w        ;18:Special Info size
  666.   spe2.l           ;20:Special Info 2 (Hook)
  667.   spe2size.w       ;24:Special Info 2 size
  668. End NEWTYPE        ;26:sizeof
  669.  
  670. #kind_nothing=-1
  671. #kind_app=0
  672. #kind_win=1
  673. #kind_menu=2
  674. #kind_gadget=3
  675. #kind_label=4
  676. #kind_other=5
  677.  
  678. Macro s
  679.   SizeOf.MUIObject\`1(a3)
  680. End Macro
  681.  
  682. Macro t
  683.   SizeOf.MUIObject\`1(a2)
  684. End Macro
  685.  
  686. Macro u
  687.   SizeOf.MUIObject\`1(a0)
  688. End Macro
  689.  
  690.  
  691. ;************
  692. ;*** CODE ***
  693. ;************
  694.  
  695. .
  696. ._codeinit:
  697.         MOVEM.l d0-d1/a1/a6,-(a7)
  698.         LEA     muiname(pc),a1
  699.         MOVEQ   #0,d0
  700.         MOVEA.l 4,a6
  701.         JSR     _LVOOpenLibrary(a6)
  702.         MOVE.l  d0,_MUIBase
  703.         BEQ     initerr
  704.         MOVE.l  #160,d0
  705.         MOVE.l  #MEMF_PUBLIC|MEMF_CLEAR,d1
  706.         ALibJsr $C002
  707.         MOVE.l  d0,apptags
  708.         BEQ     initerr
  709. 'ok:    MOVE.w  #0,apptap
  710.         MOVEM.l (a7)+,d0-d1/a1/a6
  711.         RTS
  712.  
  713. ._codefinit:
  714.         MOVEM.l d0/a1/a6,-(a7)
  715.         BSR     _removeapp
  716.         MOVE.l  _MUIBase(pc),d0
  717.         BEQ     'nolib
  718.         MOVEA.l d0,a1
  719.         MOVEA.l 4,a6
  720.         JSR     _LVOCloseLibrary(a6)
  721.         CLR.l   _MUIBase
  722. 'nolib: MOVEM.l (a7)+,d0/a1/a6
  723.         RTS
  724.  
  725.  
  726. muiname:  Dc.b  "muimaster.library",0
  727.  
  728.         Even
  729.  
  730. .
  731. ._setmaxtags:
  732.         MOVE.l  d0,maxt
  733.         RTS
  734. .
  735. ._apptitle:
  736.         MOVEA.l apptags(pc),a1
  737.         MOVE.w  apptap(pc),d2
  738.         ADDA.w  d2,a1
  739.         MOVE.l  #MUIA_Application_Title,(a1)+
  740.         MOVE.l  -(a2),d1
  741.         ALibJsr $cf01
  742.         MOVE.l  d0,(a1)+
  743.         ADDQ.w  #8,d2
  744.         MOVE.w  d2,apptap
  745.         RTS
  746.  
  747. ._appver:
  748.         MOVEA.l apptags(pc),a1
  749.         MOVE.w  apptap(pc),d2
  750.         ADDA.w  d2,a1
  751.         MOVE.l  #MUIA_Application_Version,(a1)+
  752.         MOVE.l  -(a2),d1
  753.         ALibJsr $cf01
  754.         MOVE.l  d0,(a1)+
  755.         ADDQ.w  #8,d2
  756.         MOVE.w  d2,apptap
  757.         RTS
  758.  
  759. ._appcr:
  760.         MOVEA.l apptags(pc),a1
  761.         MOVE.w  apptap(pc),d2
  762.         ADDA.w  d2,a1
  763.         MOVE.l  #MUIA_Application_Copyright,(a1)+
  764.         MOVE.l  -(a2),d1
  765.         ALibJsr $cf01
  766.         MOVE.l  d0,(a1)+
  767.         ADDQ.w  #8,d2
  768.         MOVE.w  d2,apptap
  769.         RTS
  770.  
  771. ._appauthor:
  772.         MOVEA.l apptags(pc),a1
  773.         MOVE.w  apptap(pc),d2
  774.         ADDA.w  d2,a1
  775.         MOVE.l  #MUIA_Application_Author,(a1)+
  776.         MOVE.l  -(a2),d1
  777.         ALibJsr $cf01
  778.         MOVE.l  d0,(a1)+
  779.         ADDQ.w  #8,d2
  780.         MOVE.w  d2,apptap
  781.         RTS
  782.  
  783. ._appdesc:
  784.         MOVEA.l apptags(pc),a1
  785.         MOVE.w  apptap(pc),d2
  786.         ADDA.w  d2,a1
  787.         MOVE.l  #MUIA_Application_Description,(a1)+
  788.         MOVE.l  -(a2),d1
  789.         ALibJsr $cf01
  790.         MOVE.l  d0,(a1)+
  791.         ADDQ.w  #8,d2
  792.         MOVE.w  d2,apptap
  793.         RTS
  794.  
  795. ._appbase:
  796.         MOVEA.l apptags(pc),a1
  797.         MOVE.w  apptap(pc),d2
  798.         ADDA.w  d2,a1
  799.         MOVE.l  #MUIA_Application_Base,(a1)+
  800.         MOVE.l  -(a2),d1
  801.         ALibJsr $cf01
  802.         MOVE.l  d0,(a1)+
  803.         ADDQ.w  #8,d2
  804.         MOVE.w  d2,apptap
  805.         RTS
  806.  
  807. ._apploc:
  808.         MOVE.l  #appstruct,d0
  809.         RTS
  810.  
  811. ._appobj:
  812.         MOVE.l  apptags(pc),!s{tagl}
  813.         MOVE.w  apptap(pc),!s{tagp}
  814.         MOVE.l  appaddr(pc),!s{adr}
  815.         MOVE.w  #kind_app,!s{kind}
  816.         MOVE.l  #160,!s{size}
  817.         RTS
  818.  
  819.  
  820. ._appwin:                        ;a3=MUIObject=>Window
  821.         TST.l   !s{adr}
  822.         BEQ     'nowin
  823.         MOVEQ   #0,d0
  824.         CMP.w   #kind_win,!s{kind}
  825.         BNE     'nowin
  826.         MOVEA.l apptags(pc),a1
  827.         MOVE.w  apptap(pc),d0
  828.         ADDA.w  d0,a1
  829.         MOVE.l  #SubWindow,(a1)+
  830.         MOVE.l  !s{adr},(a1)+
  831.         ADDQ.w  #8,d0
  832.         MOVE.w  d0,apptap
  833.         MOVE.l  #-1,d0
  834. 'nowin: RTS
  835.  
  836. ._addapptags:
  837.         MOVEA.l apptags(pc),a1
  838.         MOVE.w  apptap(pc),d0
  839.         ADDA.w  d0,a1
  840.         SUBQ    #1,d7
  841. 'loop:  MOVE.l  -(a2),(a1)+
  842.         ADDQ.w  #4,d0
  843.         DBF     d7,'loop
  844.         MOVE.w  d0,apptap
  845.         RTS
  846.  
  847. _addapptagsa:                   ;d0=&taglist
  848.         MOVEA.l d0,a0
  849.         BEQ     'notags
  850.         MOVEA.l apptags(pc),a1
  851.         MOVE.l  a1,d0
  852.         MOVE.w  apptap(pc),d1
  853.         ADDA.w  d1,a1
  854. 'loop:  MOVE.l  (a0)+,(a1)+
  855.         BNE     'loop
  856.         SUBA.l  d0,a1
  857.         MOVE.w  d0,apptap
  858. 'notags:RTS
  859.  
  860. ._createapp:
  861.         LEA     appclass(pc),a0
  862.         MOVE.l  apptags(pc),d0
  863.         BEQ     'noapp
  864.         MOVEA.l d0,a1
  865.         !CALLMUI        {MUI_NewObjectA}
  866.         MOVE.l  d0,appaddr
  867.         BEQ     'noapp
  868.         MOVE.l  #-1,d0
  869. 'noapp: RTS
  870.  
  871. ._removeapp:
  872.         MOVE.l  appaddr(pc),d0
  873.         BEQ     'noapp
  874.         MOVEA.l d0,a0
  875.         !CALLMUI        {MUI_DisposeObject}
  876.         CLR.l   appaddr
  877. 'noapp: RTS
  878.  
  879.  
  880.  
  881. .
  882. _createwin2:
  883.         MOVEQ   #0,d2
  884. _createwin1:
  885.         SUBA.l  a0,a0
  886. ._createwin:                    ;d1=title$ d2=id$ a0=MUIObject# (WindowsContents)
  887.         TST.l   6(a3)
  888.         BEQ     'notl
  889.         MOVEA.l 6(a3),a1
  890.         MOVE.w  10(a3),d6
  891.         ADDA.w  d6,a1
  892.         MOVE.l  #MUIA_Window_Title,(a1)+
  893.         MOVE.l  d1,d0
  894.         MOVE.l  -4(a2),d1
  895.         ALibJsr $cf01
  896.         MOVE.l  d0,(a1)+
  897.         ADDQ.w  #8,d6
  898.         TST.l   d2
  899.         BEQ     'noid
  900.         MOVE.l  #MUIA_Window_ID,(a1)+
  901.         MOVE.l  d2,(a1)+
  902.         ADDQ.w  #8,d6
  903. 'noid:  TST.l   (a0)
  904.         BEQ     'noobj
  905.         MOVE.l  #WindowContents,(a1)+
  906.         MOVE.l  (a0),(a1)+
  907.         ADDQ.w  #8,d6
  908. 'noobj: MOVEA.l !s{tagl},a1
  909.         MOVE.w  d6,10(a3)
  910.         MOVEQ   #0,d0
  911.         LEA     winclass(pc),a0
  912.         !CALLMUI        {MUI_NewObjectA}
  913.         MOVE.l  d0,(a3)
  914.         BEQ     'nowin
  915.         MOVE.w  #kind_win,!s{kind}
  916.         MOVE.l  #-1,d0
  917.         BRA     'nowin
  918. 'notl:
  919.         TST.l   (a0)
  920.         BEQ     'nowin
  921.         MOVEM.l d1-d2/a2-a3,-(a7)
  922.         MOVE.l  maxt(pc),d0
  923.         LSL.l   #2,d0
  924.         MOVE.w  d0,!s{size}
  925.         MOVE.l  #MEMF_PUBLIC|MEMF_CLEAR,d1
  926.         ALibJsr $C002
  927.         MOVEM.l (a7)+,d1-d2/a2-a3
  928.         MOVE.l  d0,6(a3)
  929.         BEQ     'nowin
  930.         MOVEA.l d0,a1
  931.         MOVE.l  #MUIA_Window_Title,(a1)+
  932.         MOVE.l  d1,d0
  933.         MOVE.l  -4(a2),d1
  934.         ALibJsr $cf01
  935.         MOVE.l  d0,(a1)+
  936.         MOVE.l  #MUIA_Window_ID,(a1)+
  937.         MOVE.l  d2,(a1)+
  938.         MOVE.l  #WindowContents,(a1)+
  939.         MOVE.l  (a0),(a1)+
  940.         MOVE.w  #24,10(a3)
  941.         MOVEA.l 6(a3),a1
  942.         LEA     winclass(pc),a0
  943.         !CALLMUI        {MUI_NewObjectA}
  944.         MOVE.l  d0,(a3)
  945.         BEQ     'nowin
  946.         MOVE.w  #kind_win,4(a3)
  947.         MOVE.l  #-1,d0
  948. 'nowin:
  949.         RTS
  950.  
  951. ._openwin:
  952.         MOVE.l  a6,_IntuiBase
  953.         MOVEQ   #0,d0
  954.         CMP.w   #kind_win,4(a3)
  955.         BNE     'nowin
  956.         MOVE.l  (a3),d0
  957.         BEQ     'nowin
  958.         MOVE.l  #MUIA_Window_Open,d1
  959.         MOVEQ   #1,d2
  960.         BSR     _set
  961.         MOVE.l  #-1,d0
  962. 'nowin: RTS
  963.  
  964. ._closewin:
  965.         MOVE.l  a6,_IntuiBase
  966.         MOVEQ   #0,d0
  967.         CMP.w   #kind_win,4(a3)
  968.         BNE     'nowin
  969.         MOVE.l  (a3),d0
  970.         BEQ     'nowin
  971.         MOVE.l  #MUIA_Window_Open,d1
  972.         MOVEQ   #0,d2
  973.         BSR     _set
  974.         MOVE.l  #-1,d0
  975. 'nowin: RTS
  976.  
  977. .
  978. ._objloc:
  979.         MOVE.l  !s{adr},d0
  980.         RTS
  981.  
  982. .
  983. ._request:  ;(win,flags,&title$,&gadget$,&format$,params)(a3,d1,d2,d3,d4,-12(a2))
  984.         MOVEQ   #0,d0
  985.         TST.l   appaddr
  986.         BEQ     'noobj
  987.         TST.l   !s{adr}
  988.         BEQ     'noobj
  989.         CMP.w   #kind_win,!s{kind}
  990.         BNE     'noobj
  991.         MOVE.l  d1,d5
  992.         MOVE.l  d2,d0
  993.         MOVE.l  -(a2),d1
  994.         ALibJsr $cf01
  995.         MOVEA.l d0,a0
  996.         MOVE.l  d0,s0
  997.         MOVE.l  d3,d0
  998.         MOVE.l  -(a2),d1
  999.         ALibJsr $cf01
  1000.         MOVEA.l d0,a1
  1001.         MOVE.l  d0,s1
  1002.         MOVE.l  d4,d0
  1003.         MOVE.l  -(a2),d1
  1004.         ALibJsr $cf01
  1005.         MOVE.l  d0,s2
  1006.         MOVE.l  !s{adr},d1
  1007.         MOVE.l  d5,d2
  1008.         SUBA.l  a3,a3
  1009.         TST.w   d7
  1010.         BLE     'noparams
  1011.         LEA     args(pc),a3
  1012.         MOVE.l  a3,d6
  1013.         SUBQ    #1,d7
  1014. 'loop:  MOVE.l  -(a2),(a3)+
  1015.         DBF     d7,'loop
  1016.         MOVE.l  #0,(a3)+
  1017.         MOVEA.l d6,a3
  1018. 'noparams:
  1019.         MOVEA.l s2,a2
  1020.         MOVE.l  appaddr(pc),d0
  1021.         !CALLMUI        {MUI_RequestA}    ;(app,win,flags,title,gadgets,format,params)(d0,d1,d2,a0,a1,a2,a3)
  1022.         MOVE.l  d0,d5
  1023.         MOVE.l  s0,d0
  1024.         ALibJsr $cf02
  1025.         MOVE.l  s1,d0
  1026.         ALibJsr $cf02
  1027.         MOVE.l  s2,d0
  1028.         ALibJsr $cf02
  1029.         MOVE.l  d5,d0
  1030. 'noobj: RTS
  1031.  
  1032. .
  1033. ._addobjtags:
  1034.         TST.l   6(a3)
  1035.         BEQ     'notl
  1036.         MOVEA.l 6(a3),a1
  1037.         MOVE.w  10(a3),d0
  1038.         ADDA.w  d0,a1
  1039.         SUBQ    #1,d7
  1040. 'loop:  MOVE.l  -(a2),(a1)+
  1041.         ADDQ.w  #4,d0
  1042.         DBF     d7,'loop
  1043.         MOVE.w  d0,10(a3)
  1044.         BRA     'nomem
  1045. 'notl:  MOVE.l  maxt(pc),d0
  1046.         LSL     #2,d0
  1047.         MOVE.w  d0,!s{size}
  1048.         MOVE.l  #MEMF_PUBLIC|MEMF_CLEAR,d1
  1049.         ALibJsr $C002
  1050.         MOVE.l  d0,6(a3)
  1051.         BEQ     'nomem
  1052.         MOVE.w  #0,10(a3)
  1053.         MOVEA.l d0,a1
  1054.         MOVEQ   #0,d0
  1055.         SUBQ    #1,d7
  1056. 'loop1: MOVE.l  -(a2),(a1)+
  1057.         ADDQ.w  #4,d0
  1058.         DBF     d7,'loop1
  1059.         MOVE.w  d0,10(a3)
  1060. 'nomem: RTS
  1061.  
  1062. _addobjtagsa:
  1063.         TST.l   !s{tagl}
  1064.         BEQ     'notl
  1065.         MOVEA.l !s{tagl},a1
  1066.         ADDA.w  d0,a1
  1067.         MOVEA.l d1,a0
  1068.         MOVEA.l (a0),a0
  1069. 'loop:  MOVE.l  (a0)+,(a1)+
  1070.         BNE     'loop
  1071.         MOVE.l  !s{tagl},d0
  1072.         SUBA.l  d0,a1
  1073.         MOVE.w  d0,!s{tagp}
  1074.         BRA     'nomem
  1075. 'notl:  MOVE.l  maxt(pc),d0
  1076.         LSL     #2,d0
  1077.         MOVE.w  d0,!s{size}
  1078.         MOVE.l  d1,-(a7)
  1079.         MOVE.l  #MEMF_PUBLIC|MEMF_CLEAR,d1
  1080.         ALibJsr $C002
  1081.         MOVE.l  (a7)+,d1
  1082.         MOVE.l  d0,!s{tagl}
  1083.         BEQ     'nomem
  1084.         MOVEA.l d0,a1
  1085.         MOVEA.l d1,a0
  1086.         MOVEA.l (a0),a0
  1087. 'loop1: MOVE.l  (a0)+,(a1)+
  1088.         BNE     'loop1
  1089.         MOVE.l  !s{tagl},d0
  1090.         SUBA.l  d0,a1
  1091.         MOVE.w  !s{tagp},d1
  1092.         ADD.w   d0,d1
  1093.         MOVE.w  d1,!s{tagp}
  1094. 'nomem: RTS
  1095.  
  1096.  
  1097. .
  1098. ._muinewobj:
  1099.         MOVEA.l d1,a0
  1100.         MOVEA.l !s{tagl},a1
  1101.         TST.l   !s{tagl}
  1102.         BNE     'tlok
  1103.         MOVE.l  maxt(pc),d0
  1104.         LSL     #2,d0
  1105.         MOVE.w  d0,!s{size}
  1106.         MOVE.l  #MEMF_PUBLIC|MEMF_CLEAR,d1
  1107.         ALibJsr $C002
  1108.         MOVE.l  d0,!s{tagl}
  1109.         BEQ     'err
  1110.         MOVEA.l d0,a1
  1111.         CLR.w   !s{tagp}
  1112. 'tlok:  MOVE.w  !s{tagp},d6
  1113.         ADDA.w  d6,a1
  1114.         SUBQ    #1,d7
  1115.         TST.l   -(a2)
  1116. 'loop:  MOVE.l  -(a2),(a1)+
  1117.         ADDQ.w  #4,d6
  1118.         DBF     d7,'loop
  1119.         MOVE.w  d6,!s{tagp}
  1120.         MOVEA.l !s{tagl},a1
  1121.         !CALLMUI        {MUI_NewObjectA}
  1122.         MOVE.l  d0,!s{adr}
  1123.         BEQ     'err
  1124.         MOVE.l  #-1,d0
  1125. 'err:   RTS
  1126.  
  1127.  
  1128. _muinewobja:
  1129.         MOVEA.l d1,a0
  1130.         MOVEA.l !s{tagl},a1
  1131.         TST.l   !s{tagl}
  1132.         BNE     'tlok
  1133.         MOVE.l  maxt(pc),d0
  1134.         LSL     #2,d0
  1135.         MOVE.w  d0,!s{size}
  1136.         MOVE.l  #MEMF_PUBLIC|MEMF_CLEAR,d1
  1137.         ALibJsr $C002
  1138.         MOVE.l  d0,!s{tagl}
  1139.         BEQ     'err
  1140.         MOVEA.l d0,a1
  1141.         CLR.w   !s{tagp}
  1142. 'tlok:  MOVE.w  !s{tagp},d6
  1143.         ADDA.w  d6,a1
  1144.         MOVEA.l d2,a2
  1145. 'loop:  MOVE.l  (a2)+,(a1)+
  1146.         BNE     'loop
  1147.         MOVE.l  !s{tagl},d6
  1148.         SUBA.l  d6,a1
  1149.         MOVE.w  d6,!s{tagp}
  1150.         MOVEA.l !s{tagl},a1
  1151.         !CALLMUI        {MUI_NewObjectA}
  1152.         MOVE.l  d0,!s{adr}
  1153.         BEQ     'err
  1154.         MOVE.l  #-1,d0
  1155. 'err:   RTS
  1156.  
  1157. ._muimakeobj:
  1158.         MOVE.l  d1,-(a7)
  1159.         MOVEA.l !s{tagl},a1
  1160.         TST.l   !s{tagl}
  1161.         BNE     'tlok
  1162.         MOVE.l  maxt(pc),d0
  1163.         LSL     #2,d0
  1164.         MOVE.w  d0,!s{size}
  1165.         MOVE.l  #MEMF_PUBLIC|MEMF_CLEAR,d1
  1166.         ALibJsr $C002
  1167.         MOVE.l  d0,!s{tagl}
  1168.         BEQ     'err
  1169.         MOVEA.l d0,a1
  1170.         CLR.w   !s{tagp}
  1171. 'tlok:  MOVE.w  !s{tagp},d6
  1172.         ADDA.w  d6,a1
  1173.         SUBQ    #1,d7
  1174. 'loop:  MOVE.l  -(a2),(a1)+
  1175.         ADDQ.w  #4,d6
  1176.         DBF     d7,'loop
  1177.         MOVE.w  d6,!s{tagp}
  1178.         MOVE.l  (a7)+,d0
  1179.         MOVEA.l !s{tagl},a0
  1180.         !CALLMUI        {MUI_MakeObjectA}
  1181.         MOVE.l  d0,!s{adr}
  1182.         BEQ     'err
  1183.         MOVE.l  #-1,d0
  1184. 'err:   RTS
  1185.  
  1186.  
  1187.  
  1188. _muimakeobja:
  1189.         MOVE.l  d1,-(a7)
  1190.         MOVEA.l !s{tagl},a1
  1191.         TST.l   !s{tagl}
  1192.         BNE     'tlok
  1193.         MOVE.l  maxt(pc),d0
  1194.         LSL     #2,d0
  1195.         MOVE.w  d0,!s{size}
  1196.         MOVE.l  #MEMF_PUBLIC|MEMF_CLEAR,d1
  1197.         ALibJsr $C002
  1198.         MOVE.l  d0,!s{tagl}
  1199.         BEQ     'err
  1200.         MOVEA.l d0,a1
  1201.         CLR.w   !s{tagp}
  1202. 'tlok:  MOVE.w  !s{tagp},d6
  1203.         ADDA.w  d6,a1
  1204.         MOVEA.l d2,a2
  1205. 'loop:  MOVE.l  (a2)+,(a1)+
  1206.         BNE     'loop
  1207.         MOVE.l  !s{tagl},d6
  1208.         SUBA.l  d6,a1
  1209.         MOVE.w  d6,!s{tagp}
  1210.         MOVE.l  (a7)+,d0
  1211.         MOVEA.l !s{tagl},a0
  1212.         !CALLMUI        {MUI_MakeObjectA}
  1213.         MOVE.l  d0,!s{adr}
  1214.         BEQ     'err
  1215.         MOVE.l  #-1,d0
  1216. 'err:   RTS
  1217.  
  1218.  
  1219. .
  1220. ._muimacros:
  1221.  
  1222.  
  1223. _hvspace:
  1224.         LEA     rectangleclass(pc),a0
  1225.         SUBA.l  a1,a1
  1226.         !CALLMUI        {MUI_NewObjectA}
  1227.         MOVE.l  d0,!s{adr}
  1228.         BEQ     'noobj
  1229.         CLR.l   !s{tagl}
  1230.         CLR.l   !s{size}
  1231.         MOVE.w  #kind_other,!s{kind}
  1232.         MOVE.l  #-1,d0
  1233. 'noobj: RTS
  1234.  
  1235.  
  1236. _hspace:
  1237.         MOVE.l  #MUIO_HSpace,d0
  1238.         MOVE.l  d1,a0
  1239.         !CALLMUI        {MUI_MakeObjectA}
  1240.         MOVE.l  d0,!s{adr}
  1241.         BEQ     'noobj
  1242.         CLR.l   !s{tagl}
  1243.         CLR.w   !s{size}
  1244.         MOVE.w  #kind_other,!s{kind}
  1245.         MOVE.l  #-1,d0
  1246. 'noobj: RTS
  1247.  
  1248. _vspace:
  1249.         MOVE.l  #MUIO_VSpace,d0
  1250.         MOVE.l  d1,a0
  1251.         !CALLMUI        {MUI_MakeObjectA}
  1252.         MOVE.l  d0,!s{adr}
  1253.         BEQ     'noobj
  1254.         CLR.l   !s{tagl}
  1255.         CLR.w   !s{size}
  1256.         MOVE.w  #kind_other,!s{kind}
  1257.         MOVE.l  #-1,d0
  1258. 'noobj: RTS
  1259.  
  1260.  
  1261. _string:
  1262.         MOVE.l  d1,d5
  1263.         MOVEA.l !s{tagl},a1
  1264.         TST.l   !s{tagl}
  1265.         BNE     'tlok
  1266.         MOVE.l  maxt(pc),d0
  1267.         LSL     #2,d0
  1268.         MOVE.w  d0,!s{size}
  1269.         MOVE.l  #MEMF_PUBLIC|MEMF_CLEAR,d1
  1270.         ALibJsr $C002
  1271.         MOVE.l  d0,!s{tagl}
  1272.         BEQ     'noobj
  1273.         MOVEA.l d0,a1
  1274.         CLR.w   !s{tagp}
  1275. 'tlok:  MOVE.w  !s{tagp},d6
  1276.         ADDA.w  d6,a1
  1277.         MOVE.l  #MUIA_Frame,(a1)+
  1278.         MOVE.l  #MUIV_Frame_String,(a1)+
  1279.         MOVE.l  #MUIA_String_MaxLen,(a1)+
  1280.         MOVE.l  d2,(a1)+
  1281.         MOVE.l  #MUIA_String_Contents,(a1)+
  1282.         MOVE.l  d5,(a1)+
  1283.         ADD.w   #24,d6
  1284.         MOVE.w  d6,!s{tagp}
  1285.         LEA     stringclass(pc),a0
  1286.         MOVEA.l !s{tagl},a1
  1287.         !CALLMUI        {MUI_NewObjectA}
  1288.         MOVE.l  d0,!s{adr}
  1289.         BEQ     'noobj
  1290.         MOVE.w  #kind_gadget,!s{kind}
  1291.         MOVE.l  #-1,d0
  1292. 'noobj: RTS
  1293.  
  1294. _keystring:
  1295.         MOVE.l  d1,d5
  1296.         MOVEA.l d3,a0
  1297.         MOVEQ   #0,d3
  1298.         MOVE.b  (a0),d3
  1299.         MOVEA.l !s{tagl},a1
  1300.         TST.l   !s{tagl}
  1301.         BNE     'tlok
  1302.         MOVE.l  maxt(pc),d0
  1303.         LSL     #2,d0
  1304.         MOVE.w  d0,!s{size}
  1305.         MOVE.l  #MEMF_PUBLIC|MEMF_CLEAR,d1
  1306.         ALibJsr $C002
  1307.         MOVE.l  d0,!s{tagl}
  1308.         BEQ     'noobj
  1309.         MOVEA.l d0,a1
  1310.         CLR.w   !s{tagp}
  1311. 'tlok:  MOVE.w  !s{tagp},d6
  1312.         ADDA.w  d6,a1
  1313.         MOVE.l  #MUIA_Frame,(a1)+
  1314.         MOVE.l  #MUIV_Frame_String,(a1)+
  1315.         MOVE.l  #MUIA_ControlChar,(a1)+
  1316.         MOVE.l  d3,(a1)+
  1317.         MOVE.l  #MUIA_String_MaxLen,(a1)+
  1318.         MOVE.l  d2,(a1)+
  1319.         MOVE.l  #MUIA_String_Contents,(a1)+
  1320.         MOVE.l  d5,(a1)+
  1321.         ADD.w   #32,d6
  1322.         MOVE.w  d6,!s{tagp}
  1323.         LEA     stringclass(pc),a0
  1324.         MOVEA.l !s{tagl},a1
  1325.         !CALLMUI        {MUI_NewObjectA}
  1326.         MOVE.l  d0,!s{adr}
  1327.         BEQ     'noobj
  1328.         MOVE.w  #kind_gadget,!s{kind}
  1329.         MOVE.l  #-1,d0
  1330. 'noobj: RTS
  1331.  
  1332. _checkmark:
  1333.         MOVE.l  d1,d5
  1334.         MOVEA.l !s{tagl},a1
  1335.         TST.l   !s{tagl}
  1336.         BNE     'tlok
  1337.         MOVE.l  maxt(pc),d0
  1338.         LSL     #2,d0
  1339.         MOVE.w  d0,!s{size}
  1340.         MOVE.l  #MEMF_PUBLIC|MEMF_CLEAR,d1
  1341.         ALibJsr $C002
  1342.         MOVE.l  d0,!s{tagl}
  1343.         BEQ     'noobj
  1344.         MOVEA.l d0,a1
  1345.         CLR.w   !s{tagp}
  1346. 'tlok:  MOVE.w  !s{tagp},d6
  1347.         ADDA.w  d6,a1
  1348.         MOVE.l  #MUIA_Frame,(a1)+
  1349.         MOVE.l  #MUIV_Frame_ImageButton,(a1)+
  1350.         MOVE.l  #MUIA_InputMode,(a1)+
  1351.         MOVE.l  #MUIV_InputMode_Toggle,(a1)+
  1352.         MOVE.l  #MUIA_Image_Spec,(a1)+
  1353.         MOVE.l  #MUII_CheckMark,(a1)+
  1354.         MOVE.l  #MUIA_Image_FreeVert,(a1)+
  1355.         MOVE.l  #1,(a1)+
  1356.         MOVE.l  #MUIA_Selected,(a1)+
  1357.         MOVE.l  d5,(a1)+
  1358.         MOVE.l  #MUIA_Background,(a1)+
  1359.         MOVE.l  #MUII_ButtonBack,(a1)+
  1360.         MOVE.l  #MUIA_ShowSelState,(a1)+
  1361.         MOVE.l  #0,(a1)+
  1362.         ADD.w   #56,d6
  1363.         MOVE.w  d6,!s{tagp}
  1364.         LEA     imageclass(pc),a0
  1365.         MOVEA.l !s{tagl},a1
  1366.         !CALLMUI        {MUI_NewObjectA}
  1367.         MOVE.l  d0,!s{adr}
  1368.         BEQ     'noobj
  1369.         MOVE.w  #kind_gadget,!s{kind}
  1370.         MOVE.l  #-1,d0
  1371. 'noobj: RTS
  1372.  
  1373. _keycheckmark:
  1374.         MOVE.l  d1,d5
  1375.         MOVEA.l d2,a0
  1376.         MOVEQ   #0,d2
  1377.         MOVE.b  (a0),d2
  1378.         MOVEA.l !s{tagl},a1
  1379.         TST.l   !s{tagl}
  1380.         BNE     'tlok
  1381.         MOVE.l  maxt(pc),d0
  1382.         LSL     #2,d0
  1383.         MOVE.w  d0,!s{size}
  1384.         MOVE.l  #MEMF_PUBLIC|MEMF_CLEAR,d1
  1385.         ALibJsr $C002
  1386.         MOVE.l  d0,!s{tagl}
  1387.         BEQ     'noobj
  1388.         MOVEA.l d0,a1
  1389.         CLR.w   !s{tagp}
  1390. 'tlok:  MOVE.w  !s{tagp},d6
  1391.         ADDA.w  d6,a1
  1392.         MOVE.l  #MUIA_Frame,(a1)+
  1393.         MOVE.l  #MUIV_Frame_ImageButton,(a1)+
  1394.         MOVE.l  #MUIA_InputMode,(a1)+
  1395.         MOVE.l  #MUIV_InputMode_Toggle,(a1)+
  1396.         MOVE.l  #MUIA_Image_Spec,(a1)+
  1397.         MOVE.l  #MUII_CheckMark,(a1)+
  1398.         MOVE.l  #MUIA_Image_FreeVert,(a1)+
  1399.         MOVE.l  #1,(a1)+
  1400.         MOVE.l  #MUIA_Selected,(a1)+
  1401.         MOVE.l  d5,(a1)+
  1402.         MOVE.l  #MUIA_Background,(a1)+
  1403.         MOVE.l  #MUII_ButtonBack,(a1)+
  1404.         MOVE.l  #MUIA_ShowSelState,(a1)+
  1405.         MOVE.l  #0,(a1)+
  1406.         MOVE.l  #MUIA_ControlChar,(a1)+
  1407.         MOVE.l  d2,(a1)+
  1408.         ADD.w   #64,d6
  1409.         MOVE.w  d6,!s{tagp}
  1410.         LEA     imageclass(pc),a0
  1411.         MOVEA.l !s{tagl},a1
  1412.         !CALLMUI        {MUI_NewObjectA}
  1413.         MOVE.l  d0,!s{adr}
  1414.         BEQ     'noobj
  1415.         MOVE.w  #kind_gadget,!s{kind}
  1416.         MOVE.l  #-1,d0
  1417. 'noobj: RTS
  1418.  
  1419.  
  1420. _simplebutton:
  1421.         MOVE.l  d1,str
  1422.         BSR     _freeobj
  1423.         LEA     str(pc),a0
  1424.         MOVE.l  #MUIO_Button,d0
  1425.         !CALLMUI        {MUI_MakeObjectA}
  1426.         MOVE.l  d0,!s{adr}
  1427.         BEQ     'noobj
  1428.         CLR.l   !s{tagl}
  1429.         CLR.w   !s{size}
  1430.         MOVE.w  #kind_gadget,!s{kind}
  1431.         MOVE.l  #-1,d0
  1432. 'noobj: RTS
  1433.  
  1434. _keybutton:
  1435.         MOVE.l  d1,d0
  1436.         MOVE.l  -4(a2),d1
  1437.         ALibJsr $cf01
  1438.         MOVE.l  d0,d5
  1439.         MOVEA.l d2,a0
  1440.         MOVEQ   #0,d2
  1441.         MOVE.b  (a0),d2
  1442.         MOVEA.l !s{tagl},a1
  1443.         TST.l   !s{tagl}
  1444.         BNE     'tlok
  1445.         MOVE.l  maxt(pc),d0
  1446.         LSL     #2,d0
  1447.         MOVE.w  d0,!s{size}
  1448.         MOVE.l  #MEMF_PUBLIC|MEMF_CLEAR,d1
  1449.         ALibJsr $C002
  1450.         MOVE.l  d0,!s{tagl}
  1451.         BEQ     'noobj
  1452.         MOVEA.l d0,a1
  1453.         CLR.w   !s{tagp}
  1454. 'tlok:  MOVE.w  !s{tagp},d6
  1455.         ADDA.w  d6,a1
  1456.         MOVE.l  #MUIA_Frame,(a1)+
  1457.         MOVE.l  #MUIV_Frame_Button,(a1)+
  1458.         MOVE.l  #MUIA_Font,(a1)+
  1459.         MOVE.l  #MUIV_Font_Button,(a1)+
  1460.         MOVE.l  #MUIA_Text_Contents,(a1)+
  1461.         MOVE.l  d5,(a1)+
  1462.         MOVE.l  #MUIA_Text_PreParse,(a1)+
  1463.         LEA     cenc(pc),a0
  1464.         MOVE.l  a0,d0
  1465.         MOVE.l  #4,d1
  1466.         ALibJsr $cf01
  1467.         MOVE.l  d0,(a1)+
  1468.         MOVE.l  #MUIA_Text_HiChar,(a1)+
  1469.         MOVE.l  d2,(a1)+
  1470.         MOVE.l  #MUIA_ControlChar,(a1)+
  1471.         MOVE.l  d2,(a1)+
  1472.         MOVE.l  #MUIA_InputMode,(a1)+
  1473.         MOVE.l  #MUIV_InputMode_RelVerify,(a1)+
  1474.         MOVE.l  #MUIA_Background,(a1)+
  1475.         MOVE.l  #MUII_ButtonBack,(a1)+
  1476.         ADD.w   #64,d6
  1477.         MOVE.w  d6,!s{tagp}
  1478.         LEA     textclass(pc),a0
  1479.         MOVEA.l !s{tagl},a1
  1480.         !CALLMUI        {MUI_NewObjectA}
  1481.         MOVE.l  d0,!s{adr}
  1482.         BEQ     'noobj
  1483.         MOVE.w  #kind_gadget,!s{kind}
  1484.         MOVE.l  #-1,d0
  1485. 'noobj: RTS
  1486.  
  1487.  
  1488. _cycle:
  1489.         MOVEA.l !s{tagl},a1
  1490.         TST.l   !s{tagl}
  1491.         BNE     'tlok
  1492.         MOVE.l  maxt(pc),d0
  1493.         LSL     #2,d0
  1494.         MOVE.w  d0,!s{size}
  1495.         MOVE.l  #MEMF_PUBLIC|MEMF_CLEAR,d1
  1496.         ALibJsr $C002
  1497.         MOVE.l  d0,!s{tagl}
  1498.         BEQ     'noobj
  1499.         MOVEA.l d0,a1
  1500.         CLR.w   !s{tagp}
  1501. 'tlok:  MOVE.w  !s{tagp},d6
  1502.         ADDA.w  d6,a1
  1503.         MOVE.l  #20,d0
  1504.         LSL     #2,d0
  1505.         MOVE.w  d0,!s{spesize}
  1506.         MOVE.l  #MEMF_PUBLIC|MEMF_CLEAR,d1
  1507.         ALibJsr $C002
  1508.         MOVE.l  d0,!s{special}
  1509.         BEQ     'noobj
  1510.         MOVEA.l d0,a0
  1511.         SUBQ    #1,d7
  1512. 'loop:  MOVE.l  -(a2),d1
  1513.         MOVE.l  -(a2),d0
  1514.         ALibJsr $cf01
  1515.         MOVE.l  d0,(a0)+
  1516.         DBF     d7,'loop
  1517.         MOVE.l  #0,(a0)+
  1518.         MOVE.l  #MUIA_Font,(a1)+
  1519.         MOVE.l  #MUIV_Font_Button,(a1)+
  1520.         MOVE.l  #MUIA_Cycle_Entries,(a1)+
  1521.         MOVE.l  !s{special},(a1)+
  1522.         ADD.w   #16,d6
  1523.         MOVE.w  d6,!s{tagp}
  1524.         LEA     cycleclass(pc),a0
  1525.         MOVEA.l !s{tagl},a1
  1526.         !CALLMUI        {MUI_NewObjectA}
  1527.         MOVE.l  d0,!s{adr}
  1528.         BEQ     'noobj
  1529.         MOVE.w  #kind_gadget,!s{kind}
  1530.         MOVE.l  #-1,d0
  1531. 'noobj: RTS
  1532.  
  1533. _cyclea:
  1534.         MOVE.l  d1,d5
  1535.         TST.l   !s{tagl}
  1536.         BNE     'tlok
  1537.         MOVE.l  maxt(pc),d0
  1538.         LSL     #2,d0
  1539.         MOVE.w  d0,!s{size}
  1540.         MOVE.l  #MEMF_PUBLIC|MEMF_CLEAR,d1
  1541.         ALibJsr $C002
  1542.         MOVE.l  d0,!s{tagl}
  1543.         BEQ     'noobj
  1544.         CLR.w   !s{tagp}
  1545. 'tlok:
  1546.         MOVEA.l !s{tagl},a1
  1547.         MOVE.w  !s{tagp},d6
  1548.         ADDA.w  d6,a1
  1549.         MOVE.l  #MUIA_Font,(a1)+
  1550.         MOVE.l  #MUIV_Font_Button,(a1)+
  1551.         MOVE.l  #MUIA_Cycle_Entries,(a1)+
  1552.         MOVE.l  d5,(a1)+
  1553.         ADD.w   #16,d6
  1554.         MOVE.w  d6,!s{tagp}
  1555.         LEA     cycleclass(pc),a0
  1556.         MOVEA.l !s{tagl},a1
  1557.         !CALLMUI        {MUI_NewObjectA}
  1558.         MOVE.l  d0,!s{adr}
  1559.         BEQ     'noobj
  1560.         MOVE.w  #kind_gadget,!s{kind}
  1561.         MOVE.l  #-1,d0
  1562. 'noobj: RTS
  1563.  
  1564.  
  1565. _keycycle:
  1566.         MOVEA.l d1,a0
  1567.         MOVEQ   #0,d5
  1568.         MOVE.b  (a0),d5
  1569.         MOVEA.l !s{tagl},a1
  1570.         TST.l   !s{tagl}
  1571.         BNE     'tlok
  1572.         MOVE.l  maxt(pc),d0
  1573.         LSL     #2,d0
  1574.         MOVE.w  d0,!s{size}
  1575.         MOVE.l  #MEMF_PUBLIC|MEMF_CLEAR,d1
  1576.         ALibJsr $C002
  1577.         MOVE.l  d0,!s{tagl}
  1578.         BEQ     'noobj
  1579.         MOVEA.l d0,a1
  1580.         CLR.w   !s{tagp}
  1581. 'tlok:  MOVE.w  !s{tagp},d6
  1582.         ADDA.w  d6,a1
  1583.         MOVE.l  #20,d0
  1584.         LSL     #2,d0
  1585.         MOVE.w  d0,!s{spesize}
  1586.         MOVE.l  #MEMF_PUBLIC|MEMF_CLEAR,d1
  1587.         ALibJsr $C002
  1588.         MOVE.l  d0,!s{special}
  1589.         BEQ     'noobj
  1590.         MOVEA.l d0,a0
  1591.         SUBQ    #1,d7
  1592.         TST.l   -(a2)
  1593. 'loop:  MOVE.l  -(a2),d1
  1594.         MOVE.l  -(a2),d0
  1595.         ALibJsr $cf01
  1596.         MOVE.l  d0,(a0)+
  1597.         DBF     d7,'loop
  1598.         MOVE.l  #0,(a0)+
  1599.         MOVE.l  #MUIA_Font,(a1)+
  1600.         MOVE.l  #MUIV_Font_Button,(a1)+
  1601.         MOVE.l  #MUIA_Cycle_Entries,(a1)+
  1602.         MOVE.l  !s{special},(a1)+
  1603.         MOVE.l  #MUIA_ControlChar,(a1)+
  1604.         MOVE.l  d5,(a1)+
  1605.         ADD.w   #24,d6
  1606.         MOVE.w  d6,!s{tagp}
  1607.         LEA     cycleclass(pc),a0
  1608.         MOVEA.l !s{tagl},a1
  1609.         !CALLMUI        {MUI_NewObjectA}
  1610.         MOVE.l  d0,!s{adr}
  1611.         BEQ     'noobj
  1612.         MOVE.w  #kind_gadget,!s{kind}
  1613.         MOVE.l  #-1,d0
  1614. 'noobj: RTS
  1615.  
  1616. _keycyclea:
  1617.         MOVEA.l d1,a0
  1618.         MOVEQ   #0,d5
  1619.         MOVE.b  (a0),d5
  1620.         MOVE.l  d2,d4
  1621.         TST.l   !s{tagl}
  1622.         BNE     'tlok
  1623.         MOVE.l  maxt(pc),d0
  1624.         LSL     #2,d0
  1625.         MOVE.w  d0,!s{size}
  1626.         MOVE.l  #MEMF_PUBLIC|MEMF_CLEAR,d1
  1627.         ALibJsr $C002
  1628.         MOVE.l  d0,!s{tagl}
  1629.         BEQ     'noobj
  1630.         CLR.w   !s{tagp}
  1631. 'tlok:
  1632.         MOVEA.l !s{tagl},a1
  1633.         MOVE.w  !s{tagp},d6
  1634.         ADDA.w  d6,a1
  1635.         MOVE.l  #MUIA_Font,(a1)+
  1636.         MOVE.l  #MUIV_Font_Button,(a1)+
  1637.         MOVE.l  #MUIA_Cycle_Entries,(a1)+
  1638.         MOVE.l  d4,(a1)+
  1639.         MOVE.l  #MUIA_ControlChar,(a1)+
  1640.         MOVE.l  d5,(a1)+
  1641.         ADD.w   #24,d6
  1642.         MOVE.w  d6,!s{tagp}
  1643.         LEA     cycleclass(pc),a0
  1644.         MOVEA.l !s{tagl},a1
  1645.         !CALLMUI        {MUI_NewObjectA}
  1646.         MOVE.l  d0,!s{adr}
  1647.         BEQ     'noobj
  1648.         MOVE.w  #kind_gadget,!s{kind}
  1649.         MOVE.l  #-1,d0
  1650. 'noobj: RTS
  1651.  
  1652. _radio:
  1653.         MOVE.l  d1,d0
  1654.         MOVE.l  -(a2),d1
  1655.         ALibJsr $cf01
  1656.         MOVE.l  d0,d4
  1657.         MOVEA.l !s{tagl},a1
  1658.         TST.l   !s{tagl}
  1659.         BNE     'tlok
  1660.         MOVE.l  maxt(pc),d0
  1661.         LSL     #2,d0
  1662.         MOVE.w  d0,!s{size}
  1663.         MOVE.l  #MEMF_PUBLIC|MEMF_CLEAR,d1
  1664.         ALibJsr $C002
  1665.         MOVE.l  d0,!s{tagl}
  1666.         BEQ     'noobj
  1667.         MOVEA.l d0,a1
  1668.         CLR.w   !s{tagp}
  1669. 'tlok:  MOVE.w  !s{tagp},d6
  1670.         ADDA.w  d6,a1
  1671.         MOVE.l  #20,d0
  1672.         LSL     #2,d0
  1673.         MOVE.w  d0,!s{spesize}
  1674.         MOVE.l  #MEMF_PUBLIC|MEMF_CLEAR,d1
  1675.         ALibJsr $C002
  1676.         MOVE.l  d0,!s{special}
  1677.         BEQ     'noobj
  1678.         MOVEA.l d0,a0
  1679.         SUBQ    #1,d7
  1680. 'loop:  MOVE.l  -(a2),d1
  1681.         MOVE.l  -(a2),d0
  1682.         ALibJsr $cf01
  1683.         MOVE.l  d0,(a0)+
  1684.         DBF     d7,'loop
  1685.         MOVE.l  #0,(a0)+
  1686.         MOVE.l  #MUIA_Frame,(a1)+
  1687.         MOVE.l  #MUIV_Frame_Group,(a1)+
  1688.         MOVE.l  #MUIA_FrameTitle,(a1)+
  1689.         MOVE.l  d4,(a1)+
  1690.         MOVE.l  #MUIA_Background,(a1)+
  1691.         MOVE.l  #MUII_GroupBack,(a1)+
  1692.         MOVE.l  #MUIA_Radio_Entries,(a1)+
  1693.         MOVE.l  !s{special},(a1)+
  1694.         ADD.w   #32,d6
  1695.         MOVE.w  d6,!s{tagp}
  1696.         LEA     radioclass(pc),a0
  1697.         MOVEA.l !s{tagl},a1
  1698.         !CALLMUI        {MUI_NewObjectA}
  1699.         MOVE.l  d0,!s{adr}
  1700.         BEQ     'noobj
  1701.         MOVE.w  #kind_gadget,!s{kind}
  1702.         MOVE.l  #-1,d0
  1703. 'noobj: RTS
  1704.  
  1705. _radioa:
  1706.         MOVE.l  d1,d4
  1707.         MOVE.l  d2,d5
  1708.         TST.l   !s{tagl}
  1709.         BNE     'tlok
  1710.         MOVE.l  maxt(pc),d0
  1711.         LSL     #2,d0
  1712.         MOVE.w  d0,!s{size}
  1713.         MOVE.l  #MEMF_PUBLIC|MEMF_CLEAR,d1
  1714.         ALibJsr $C002
  1715.         MOVE.l  d0,!s{tagl}
  1716.         BEQ     'noobj
  1717.         MOVEA.l d0,a1
  1718.         CLR.w   !s{tagp}
  1719. 'tlok:
  1720.         MOVEA.l !s{tagl},a1
  1721.         MOVE.w  !s{tagp},d6
  1722.         ADDA.w  d6,a1
  1723.         MOVE.l  #MUIA_Frame,(a1)+
  1724.         MOVE.l  #MUIV_Frame_Group,(a1)+
  1725.         MOVE.l  #MUIA_FrameTitle,(a1)+
  1726.         MOVE.l  d4,(a1)+
  1727.         MOVE.l  #MUIA_Background,(a1)+
  1728.         MOVE.l  #MUII_GroupBack,(a1)+
  1729.         MOVE.l  #MUIA_Radio_Entries,(a1)+
  1730.         MOVE.l  d5,(a1)+
  1731.         ADD.w   #32,d6
  1732.         MOVE.w  d6,!s{tagp}
  1733.         LEA     radioclass(pc),a0
  1734.         MOVEA.l !s{tagl},a1
  1735.         !CALLMUI        {MUI_NewObjectA}
  1736.         MOVE.l  d0,!s{adr}
  1737.         BEQ     'noobj
  1738.         MOVE.w  #kind_gadget,!s{kind}
  1739.         MOVE.l  #-1,d0
  1740. 'noobj: RTS
  1741.  
  1742.  
  1743. _keyradio:
  1744.         MOVE.l  d1,d0
  1745.         MOVE.l  -(a2),d1
  1746.         ALibJsr $cf01
  1747.         MOVE.l  d0,d4
  1748.         MOVEA.l d2,a0
  1749.         MOVEQ   #0,d5
  1750.         MOVE.b  (a0),d5
  1751.         MOVEA.l !s{tagl},a1
  1752.         TST.l   !s{tagl}
  1753.         BNE     'tlok
  1754.         MOVE.l  maxt(pc),d0
  1755.         LSL     #2,d0
  1756.         MOVE.w  d0,!s{size}
  1757.         MOVE.l  #MEMF_PUBLIC|MEMF_CLEAR,d1
  1758.         ALibJsr $C002
  1759.         MOVE.l  d0,!s{tagl}
  1760.         BEQ     'noobj
  1761.         MOVEA.l d0,a1
  1762.         CLR.w   !s{tagp}
  1763. 'tlok:  MOVE.w  !s{tagp},d6
  1764.         ADDA.w  d6,a1
  1765.         MOVE.l  #20,d0
  1766.         LSL     #2,d0
  1767.         MOVE.w  d0,!s{spesize}
  1768.         MOVE.l  #MEMF_PUBLIC|MEMF_CLEAR,d1
  1769.         ALibJsr $C002
  1770.         MOVE.l  d0,!s{special}
  1771.         BEQ     'noobj
  1772.         MOVEA.l d0,a0
  1773.         SUBQ    #1,d7
  1774.         TST.l   -(a2)
  1775. 'loop:  MOVE.l  -(a2),d1
  1776.         MOVE.l  -(a2),d0
  1777.         ALibJsr $cf01
  1778.         MOVE.l  d0,(a0)+
  1779.         DBF     d7,'loop
  1780.         MOVE.l  #0,(a0)+
  1781.         MOVE.l  #MUIA_Frame,(a1)+
  1782.         MOVE.l  #MUIV_Frame_Group,(a1)+
  1783.         MOVE.l  #MUIA_FrameTitle,(a1)+
  1784.         MOVE.l  d4,(a1)+
  1785.         MOVE.l  #MUIA_Background,(a1)+
  1786.         MOVE.l  #MUII_GroupBack,(a1)+
  1787.         MOVE.l  #MUIA_Radio_Entries,(a1)+
  1788.         MOVE.l  !s{special},(a1)+
  1789.         MOVE.l  #MUIA_ControlChar,(a1)+
  1790.         MOVE.l  d5,(a1)+
  1791.         ADD.w   #40,d6
  1792.         MOVE.w  d6,!s{tagp}
  1793.         LEA     radioclass(pc),a0
  1794.         MOVEA.l !s{tagl},a1
  1795.         !CALLMUI        {MUI_NewObjectA}
  1796.         MOVE.l  d0,!s{adr}
  1797.         BEQ     'noobj
  1798.         MOVE.w  #kind_gadget,!s{kind}
  1799.         MOVE.l  #-1,d0
  1800. 'noobj: RTS
  1801.  
  1802. _keyradioa:
  1803.         MOVE.l  d1,d4
  1804.         MOVEA.l d2,a0
  1805.         MOVEQ   #0,d5
  1806.         MOVE.b  (a0),d5
  1807.         TST.l   !s{tagl}
  1808.         BNE     'tlok
  1809.         MOVE.l  maxt(pc),d0
  1810.         LSL     #2,d0
  1811.         MOVE.w  d0,!s{size}
  1812.         MOVE.l  #MEMF_PUBLIC|MEMF_CLEAR,d1
  1813.         ALibJsr $C002
  1814.         MOVE.l  d0,!s{tagl}
  1815.         BEQ     'noobj
  1816.         CLR.w   !s{tagp}
  1817. 'tlok:
  1818.         MOVEA.l !s{tagl},a1
  1819.         MOVE.w  !s{tagp},d6
  1820.         ADDA.w  d6,a1
  1821.         MOVE.l  #MUIA_Frame,(a1)+
  1822.         MOVE.l  #MUIV_Frame_Group,(a1)+
  1823.         MOVE.l  #MUIA_FrameTitle,(a1)+
  1824.         MOVE.l  d4,(a1)+
  1825.         MOVE.l  #MUIA_Background,(a1)+
  1826.         MOVE.l  #MUII_GroupBack,(a1)+
  1827.         MOVE.l  #MUIA_Radio_Entries,(a1)+
  1828.         MOVE.l  d3,(a1)+
  1829.         MOVE.l  #MUIA_ControlChar,(a1)+
  1830.         MOVE.l  d5,(a1)+
  1831.         ADD.w   #40,d6
  1832.         MOVE.w  d6,!s{tagp}
  1833.         LEA     radioclass(pc),a0
  1834.         MOVEA.l !s{tagl},a1
  1835.         !CALLMUI        {MUI_NewObjectA}
  1836.         MOVE.l  d0,!s{adr}
  1837.         BEQ     'noobj
  1838.         MOVE.w  #kind_gadget,!s{kind}
  1839.         MOVE.l  #-1,d0
  1840. 'noobj: RTS
  1841.  
  1842.  
  1843. _slider:
  1844.         MOVE.l  d1,d5
  1845.         MOVEA.l !s{tagl},a1
  1846.         TST.l   !s{tagl}
  1847.         BNE     'tlok
  1848.         MOVE.l  maxt(pc),d0
  1849.         LSL     #2,d0
  1850.         MOVE.w  d0,!s{size}
  1851.         MOVE.l  #MEMF_PUBLIC|MEMF_CLEAR,d1
  1852.         ALibJsr $C002
  1853.         MOVE.l  d0,!s{tagl}
  1854.         BEQ     'noobj
  1855.         MOVEA.l d0,a1
  1856.         CLR.w   !s{tagp}
  1857. 'tlok:  MOVE.w  !s{tagp},d6
  1858.         ADDA.w  d6,a1
  1859.         MOVE.l  #MUIA_Numeric_Min,(a1)+
  1860.         MOVE.l  d5,(a1)+
  1861.         MOVE.l  #MUIA_Numeric_Max,(a1)+
  1862.         MOVE.l  d2,(a1)+
  1863.         MOVE.l  #MUIA_Numeric_Value,(a1)+
  1864.         MOVE.l  d3,(a1)+
  1865.         ADD.w   #24,d6
  1866.         MOVE.w  d6,!s{tagp}
  1867.         LEA     sliderclass(pc),a0
  1868.         MOVEA.l !s{tagl},a1
  1869.         !CALLMUI        {MUI_NewObjectA}
  1870.         MOVE.l  d0,!s{adr}
  1871.         BEQ     'noobj
  1872.         MOVE.w  #kind_gadget,!s{kind}
  1873.         MOVE.l  #-1,d0
  1874. 'noobj: RTS
  1875.  
  1876. _keyslider:
  1877.         MOVE.l  d1,d5
  1878.         MOVE.l  d4,a0
  1879.         MOVEQ   #0,d4
  1880.         MOVE.b  (a0),d4
  1881.         MOVEA.l !s{tagl},a1
  1882.         TST.l   !s{tagl}
  1883.         BNE     'tlok
  1884.         MOVE.l  maxt(pc),d0
  1885.         LSL     #2,d0
  1886.         MOVE.w  d0,!s{size}
  1887.         MOVE.l  #MEMF_PUBLIC|MEMF_CLEAR,d1
  1888.         ALibJsr $C002
  1889.         MOVE.l  d0,!s{tagl}
  1890.         BEQ     'noobj
  1891.         MOVEA.l d0,a1
  1892.         CLR.w   !s{tagp}
  1893. 'tlok:  MOVE.w  !s{tagp},d6
  1894.         ADDA.w  d6,a1
  1895.         MOVE.l  #MUIA_Numeric_Min,(a1)+
  1896.         MOVE.l  d5,(a1)+
  1897.         MOVE.l  #MUIA_Numeric_Max,(a1)+
  1898.         MOVE.l  d2,(a1)+
  1899.         MOVE.l  #MUIA_Numeric_Value,(a1)+
  1900.         MOVE.l  d3,(a1)+
  1901.         MOVE.l  #MUIA_ControlChar,(a1)+
  1902.         MOVE.l  d4,(a1)+
  1903.         ADD.w   #32,d6
  1904.         MOVE.w  d6,!s{tagp}
  1905.         LEA     sliderclass(pc),a0
  1906.         MOVEA.l !s{tagl},a1
  1907.         !CALLMUI        {MUI_NewObjectA}
  1908.         MOVE.l  d0,!s{adr}
  1909.         BEQ     'noobj
  1910.         MOVE.w  #kind_gadget,!s{kind}
  1911.         MOVE.l  #-1,d0
  1912. 'noobj: RTS
  1913.  
  1914.  
  1915. _label:
  1916.         BSR     _freeobj
  1917.         LEA     args(pc),a1
  1918.         MOVE.l  a1,d3
  1919.         MOVE.l  d1,d0
  1920.         MOVE.l  -4(a2),d1
  1921.         ALibJsr $cf01
  1922.         MOVE.l  d0,(a1)+
  1923.         MOVE.l  d2,(a1)+
  1924.         MOVE.l  #0,(a1)+
  1925.         MOVEA.l d3,a0
  1926.         MOVE.l  #MUIO_Label,d0
  1927.         !CALLMUI        {MUI_MakeObjectA}
  1928.         MOVE.l  d0,!s{adr}
  1929.         BEQ     'noobj
  1930.         CLR.l   !s{tagl}
  1931.         CLR.w   !s{size}
  1932.         MOVE.w  #kind_label,!s{kind}
  1933.         MOVE.l  #-1,d0
  1934. 'noobj: RTS
  1935.  
  1936.  
  1937. _numbutton:  ;MUIObject,&format$,min,max (a3,d1,d2,d3)
  1938.         BSR     _freeobj
  1939.         MOVEQ   #0,d0
  1940.         LEA     args(pc),a0
  1941.         MOVE.l  a0,d5
  1942.         MOVE.l  #0,(a0)+
  1943.         MOVE.l  d2,(a0)+
  1944.         MOVE.l  d3,(a0)+
  1945.         MOVE.l  d1,d0
  1946.         MOVE.l  -4(a2),d1
  1947.         ALibJsr $cf01
  1948.         MOVE.l  d0,(a0)+
  1949.         MOVE.l  #0,(a0)+
  1950.         MOVEA.l d5,a0
  1951.         MOVE.l  #MUIO_NumericButton,d0
  1952.         !CALLMUI        {MUI_MakeObjectA}
  1953.         MOVE.l  d0,!s{adr}
  1954.         BEQ     'noobj
  1955.         CLR.l   !s{tagl}
  1956.         CLR.w   !s{size}
  1957.         MOVE.w  #kind_gadget,!s{kind}
  1958.         MOVE.l  #-1,d0
  1959. 'noobj: RTS
  1960.                                                                                                                         
  1961.  
  1962. _list:  ;d1=max d2=col d3=f$
  1963.         MOVEQ   #0,d0
  1964.         MOVE.l  d1,d4
  1965.         MOVE.l  d3,d0
  1966.         MOVE.l  -(a2),d1
  1967.         ALibJsr $cf01
  1968.         MOVE.l  d0,d3
  1969.         MOVEQ   #0,d0
  1970.         MOVEA.l !s{tagl},a1
  1971.         TST.l   !s{tagl}
  1972.         BNE     'tlok
  1973.         MOVE.l  maxt(pc),d0
  1974.         LSL     #2,d0
  1975.         MOVE.w  d0,!s{size}
  1976.         MOVE.l  #MEMF_PUBLIC|MEMF_CLEAR,d1
  1977.         ALibJsr $C002
  1978.         MOVE.l  d0,!s{tagl}
  1979.         BEQ     'noobj
  1980.         MOVEA.l d0,a1
  1981.         CLR.w   !s{tagp}
  1982. 'tlok:  MOVE.w  !s{tagp},d6
  1983.         ADDA.w  d6,a1
  1984.         MOVE.l  d4,d0
  1985.         ADDQ.l  #1,d0
  1986.         LSL     #2,d0
  1987.         MOVE.w  d0,!s{spesize}
  1988.         MOVE.l  #MEMF_PUBLIC|MEMF_CLEAR,d1
  1989.         ALibJsr $C002
  1990.         MOVE.l  d0,!s{special}
  1991.         BEQ     'noobj
  1992.         MOVEA.l d0,a0
  1993.         SUBQ    #1,d7
  1994. 'loop:  MOVE.l  -(a2),d1
  1995.         MOVE.l  -(a2),d0
  1996.         ALibJsr $cf01
  1997.         MOVE.l  d0,(a0)+
  1998.         DBF     d7,'loop
  1999.         MOVE.l  #0,(a0)+
  2000.         CMP.l   #1,d2
  2001.         BLE     'nocol
  2002.         MOVE.l  #MUIA_List_DisplayHook,(a1)+
  2003.         ADD.l   #7,d2
  2004.         LSL     #2,d2
  2005.         MOVE.w  d2,!s{spe2size}
  2006.         MOVE.l  d2,d0
  2007.         MOVE.l  #MEMF_PUBLIC|MEMF_CLEAR,d1
  2008.         ALibJsr $C002
  2009.         MOVE.l  d0,!s{spe2}
  2010.         BEQ     'noobj
  2011.         LEA     DHook(pc),a0
  2012.         MOVE.l  a1,-(a7)
  2013.         MOVEA.l d0,a1
  2014. 'looph: MOVE.l  (a0)+,(a1)+
  2015.         BNE     'looph
  2016.         MOVE.l  #SizeOf.Hook,d0
  2017.         MOVE.l  #MEMF_PUBLIC|MEMF_CLEAR,d1
  2018.         ALibJsr $C002
  2019.         MOVE.l  d0,a0
  2020.         BEQ     'noobj
  2021.         MOVE.l  !s{spe2},SizeOf.Hook\h_Entry(a0)
  2022.         MOVEA.l (a7)+,a1
  2023.         MOVE.l  a0,(a1)+
  2024.         ADDQ.w  #8,d6
  2025. 'nocol: MOVE.l  #MUIA_List_Format,(a1)+
  2026.         MOVE.l  d3,(a1)+
  2027.         MOVE.l  #MUIA_List_SourceArray,(a1)+
  2028.         MOVE.l  !s{special},(a1)+
  2029.         ADD.w   #16,d6
  2030.         MOVE.w  d6,!s{tagp}
  2031.         LEA     listclass(pc),a0
  2032.         MOVEA.l !s{tagl},a1
  2033.         !CALLMUI        {MUI_NewObjectA}
  2034.         MOVE.l  d0,!s{adr}
  2035.         BEQ     'noobj
  2036.         MOVE.l  #-1,d0
  2037. 'noobj: RTS
  2038.  
  2039. _lista: ;d1=max d2=col d3=f$ d4=*array
  2040.         MOVE.l  d1,d5
  2041.         MOVE.l  d3,d0
  2042.         MOVE.l  -(a2),d1
  2043.         ALibJsr $cf01
  2044.         MOVE.l  d0,d3
  2045.         MOVEQ   #0,d0
  2046.         TST.l   !s{tagl}
  2047.         BNE     'tlok
  2048.         MOVE.l  maxt(pc),d0
  2049.         LSL     #2,d0
  2050.         MOVE.w  d0,!s{size}
  2051.         MOVE.l  #MEMF_PUBLIC|MEMF_CLEAR,d1
  2052.         ALibJsr $C002
  2053.         MOVE.l  d0,!s{tagl}
  2054.         BEQ     'noobj
  2055.         CLR.w   !s{tagp}
  2056. 'tlok:
  2057.         MOVE.l  d5,d0
  2058.         ADDQ.l  #1,d0
  2059.         LSL     #2,d0
  2060.         MOVE.w  d0,!s{spesize}
  2061.         MOVEA.l !s{tagl},a1
  2062.         MOVE.w  !s{tagp},d6
  2063.         ADDA.w  d6,a1
  2064.         CMP.l   #1,d2
  2065.         BLE     'nocol
  2066.         MOVE.l  #MUIA_List_DisplayHook,(a1)+
  2067.         ADD.l   #7,d2
  2068.         LSL     #2,d2
  2069.         MOVE.w  d2,!s{spe2size}
  2070.         MOVE.l  d2,d0
  2071.         MOVE.l  #MEMF_PUBLIC|MEMF_CLEAR,d1
  2072.         ALibJsr $C002
  2073.         MOVE.l  d0,!s{spe2}
  2074.         BEQ     'noobj
  2075.         LEA     DHook(pc),a0
  2076.         MOVE.l  a1,-(a7)
  2077.         MOVEA.l d0,a1
  2078. 'looph: MOVE.l  (a0)+,(a1)+
  2079.         BNE     'looph
  2080.         MOVE.l  #SizeOf.Hook,d0
  2081.         MOVE.l  #MEMF_PUBLIC|MEMF_CLEAR,d1
  2082.         ALibJsr $C002
  2083.         MOVE.l  d0,a0
  2084.         BEQ     'noobj
  2085.         MOVE.l  !s{spe2},SizeOf.Hook\h_Entry(a0)
  2086.         MOVEA.l (a7)+,a1
  2087.         MOVE.l  a0,(a1)+
  2088.         ADDQ.w  #8,d6
  2089. 'nocol: MOVE.l  #MUIA_List_Format,(a1)+
  2090.         MOVE.l  d3,(a1)+
  2091.         MOVE.l  #MUIA_List_SourceArray,(a1)+
  2092.         MOVE.l  d4,(a1)+
  2093.         ADD.w   #16,d6
  2094.         MOVE.w  d6,!s{tagp}
  2095.         LEA     listclass(pc),a0
  2096.         MOVEA.l !s{tagl},a1
  2097.         !CALLMUI        {MUI_NewObjectA}
  2098.         MOVE.l  d0,!s{adr}
  2099.         BEQ     'noobj
  2100.         MOVE.l  #-1,d0
  2101. 'noobj: RTS
  2102.  
  2103. _listb: ;d1=max d2=col d3=f$
  2104.         MOVE.l  d1,d4
  2105.         MOVE.l  d3,d0
  2106.         MOVE.l  -(a2),d1
  2107.         ALibJsr $cf01
  2108.         MOVE.l  d0,d3
  2109.         MOVEQ   #0,d0
  2110.         TST.l   !s{tagl}
  2111.         BNE     'tlok
  2112.         MOVE.l  maxt(pc),d0
  2113.         LSL     #2,d0
  2114.         MOVE.w  d0,!s{size}
  2115.         MOVE.l  #MEMF_PUBLIC|MEMF_CLEAR,d1
  2116.         ALibJsr $C002
  2117.         MOVE.l  d0,!s{tagl}
  2118.         BEQ     'noobj
  2119.         CLR.w   !s{tagp}
  2120. 'tlok:
  2121.         MOVE.l  d4,d0
  2122.         ADDQ.l  #1,d0
  2123.         LSL     #2,d0
  2124.         MOVE.w  d0,!s{spesize}
  2125.         MOVEA.l !s{tagl},a1
  2126.         MOVE.w  !s{tagp},d6
  2127.         ADDA.w  d6,a1
  2128.         CMP.l   #1,d2
  2129.         BLE     'nocol
  2130.         MOVE.l  #MUIA_List_DisplayHook,(a1)+
  2131.         ADD.l   #7,d2
  2132.         LSL     #2,d2
  2133.         MOVE.w  d2,!s{spe2size}
  2134.         MOVE.l  d2,d0
  2135.         MOVE.l  #MEMF_PUBLIC|MEMF_CLEAR,d1
  2136.         ALibJsr $C002
  2137.         MOVE.l  d0,!s{spe2}
  2138.         BEQ     'noobj
  2139.         LEA     DHook(pc),a0
  2140.         MOVE.l  a1,-(a7)
  2141.         MOVEA.l d0,a1
  2142. 'looph: MOVE.l  (a0)+,(a1)+
  2143.         BNE     'looph
  2144.         MOVE.l  #SizeOf.Hook,d0
  2145.         MOVE.l  #MEMF_PUBLIC|MEMF_CLEAR,d1
  2146.         ALibJsr $C002
  2147.         MOVE.l  d0,a0
  2148.         BEQ     'noobj
  2149.         MOVE.l  !s{spe2},SizeOf.Hook\h_Entry(a0)
  2150.         MOVEA.l (a7)+,a1
  2151.         MOVE.l  a0,(a1)+
  2152.         ADDQ.w  #8,d6
  2153. 'nocol: MOVE.l  #MUIA_List_Format,(a1)+
  2154.         MOVE.l  d3,(a1)+
  2155.         ADDQ.w  #8,d6
  2156.         MOVE.w  d6,!s{tagp}
  2157.         LEA     listclass(pc),a0
  2158.         MOVEA.l !s{tagl},a1
  2159.         !CALLMUI        {MUI_NewObjectA}
  2160.         MOVE.l  d0,!s{adr}
  2161.         BEQ     'noobj
  2162.         MOVE.l  #-1,d0
  2163. 'noobj: RTS
  2164.  
  2165.  
  2166. _listview:
  2167.         MOVEQ   #0,d0
  2168.         TST.l   !u{adr}
  2169.         BEQ     'noobj
  2170.         MOVEA.l !s{tagl},a1
  2171.         TST.l   !s{tagl}
  2172.         BNE     'tlok
  2173.         MOVE.l  maxt(pc),d0
  2174.         LSL     #2,d0
  2175.         MOVE.w  d0,!s{size}
  2176.         MOVE.l  #MEMF_PUBLIC|MEMF_CLEAR,d1
  2177.         ALibJsr $C002
  2178.         MOVE.l  d0,!s{tagl}
  2179.         BEQ     'noobj
  2180.         MOVEA.l d0,a1
  2181.         CLR.w   !s{tagp}
  2182. 'tlok:  MOVE.w  !s{tagp},d6
  2183.         ADDA.w  d6,a1
  2184.         MOVE.l  #MUIA_Listview_List,(a1)+
  2185.         MOVE.l  !u{adr},(a1)+
  2186.         ADDQ.w  #8,d6
  2187.         MOVE.w  d6,!s{tagp}
  2188.         LEA     listviewclass(pc),a0
  2189.         MOVEA.l !s{tagl},a1
  2190.         !CALLMUI        {MUI_NewObjectA}
  2191.         MOVE.l  d0,!s{adr}
  2192.         BEQ     'noobj
  2193.         MOVE.l  #-1,d0
  2194. 'noobj: RTS
  2195.  
  2196. _popbutton:
  2197.         BSR     _freeobj
  2198.         MOVEQ   #0,d0
  2199.         LEA     args(pc),a0
  2200.         MOVE.l  a0,d5
  2201.         MOVE.l  d1,(a0)+
  2202.         MOVE.l  #0,(a0)+
  2203.         MOVEA.l d5,a0
  2204.         MOVE.l  #MUIO_PopButton,d0
  2205.         !CALLMUI        {MUI_MakeObjectA}
  2206.         MOVE.l  d0,!s{adr}
  2207.         BEQ     'noobj
  2208.         CLR.l   !s{tagl}
  2209.         CLR.w   !s{size}
  2210.         MOVE.w  #kind_gadget,!s{kind}
  2211.         MOVE.l  #-1,d0
  2212. 'noobj: RTS
  2213.  
  2214. _imagebutton:
  2215.         MOVEQ   #0,d0
  2216.         TST.l   0(a0)
  2217.         BEQ     'noobj
  2218.         MOVEA.l !s{tagl},a1
  2219.         TST.l   !s{tagl}
  2220.         BNE     'tlok
  2221.         MOVE.l  maxt(pc),d0
  2222.         LSL     #2,d0
  2223.         MOVE.w  d0,!s{size}
  2224.         MOVE.l  #MEMF_PUBLIC|MEMF_CLEAR,d1
  2225.         ALibJsr $C002
  2226.         MOVE.l  d0,!s{tagl}
  2227.         BEQ     'noobj
  2228.         MOVEA.l d0,a1
  2229.         CLR.w   !s{tagp}
  2230. 'tlok:  MOVE.w  !s{tagp},d6
  2231.         ADDA.w  d6,a1
  2232.         MOVE.l  #SizeOf.Image,d0
  2233.         MOVE.w  d0,!s{spesize}
  2234.         MOVE.l  #MEMF_PUBLIC|MEMF_CLEAR,d1
  2235.         ALibJsr $C002
  2236.         MOVE.l  d0,!s{special}
  2237.         BEQ     'noobj
  2238.         MOVEA.l d0,a2
  2239.         MOVE.l  (a0),4(a2)
  2240.         MOVE.w  4(a0),8(a2)
  2241.         MOVE.l  14(a0),10(a2)
  2242.         MOVE.b  #8,14(a2)
  2243.         MOVE.l  #MUIA_Image_OldImage,(a1)+
  2244.         MOVE.l  !s{special},(a1)+
  2245.         ADD.w   #8,d6
  2246.         MOVE.w  d6,!s{tagp}
  2247.         LEA     imageclass(pc),a0
  2248.         MOVEA.l !s{tagl},a1
  2249.         !CALLMUI        {MUI_NewObjectA}
  2250.         MOVE.l  d0,!s{adr}
  2251.         BEQ     'noobj
  2252.         MOVE.l  #-1,d0
  2253. 'noobj: RTS
  2254.  
  2255.  
  2256. .
  2257. ._addobjhgroup:
  2258.         MOVEA.l !s{tagl},a1
  2259.         TST.l   !s{tagl}
  2260.         BNE     'tlok
  2261.         MOVE.l  maxt(pc),d0
  2262.         LSL     #2,d0
  2263.         MOVE.w  d0,!s{size}
  2264.         MOVE.l  #MEMF_PUBLIC|MEMF_CLEAR,d1
  2265.         ALibJsr $C002
  2266.         MOVE.l  d0,!s{tagl}
  2267.         BEQ     'noobj
  2268.         MOVEA.l d0,a1
  2269.         MOVE.l  #MUIA_Group_Horiz,(a1)+
  2270.         MOVE.l  #1,(a1)+
  2271.         MOVE.w  #8,!s{tagp}
  2272.         MOVEA.l d0,a1
  2273. 'tlok:  TST.l   !t{adr}
  2274.         BEQ     'noobj
  2275.         MOVE.w  !s{tagp},d6
  2276.         ADDA.w  d6,a1
  2277.         MOVE.l  #Child,(a1)+
  2278.         MOVE.l  !t{adr},(a1)
  2279.         ADDQ.w  #8,d6
  2280.         MOVE.w  d6,!s{tagp}
  2281.         MOVE.l  #-1,d0
  2282. 'noobj: RTS
  2283.  
  2284. ._createhgroup:
  2285.         MOVEQ   #0,d0
  2286.         TST.l   !s{tagl}
  2287.         BEQ     'noobj
  2288.         LEA     groupclass(pc),a0
  2289.         MOVEA.l !s{tagl},a1
  2290.         !CALLMUI        {MUI_NewObjectA}
  2291.         MOVE.l  d0,!s{adr}
  2292.         BEQ     'noobj
  2293.         MOVE.l  #-1,d0
  2294. 'noobj: RTS
  2295.  
  2296. ._addobjvgroup:
  2297.         MOVEA.l !s{tagl},a1
  2298.         TST.l   !s{tagl}
  2299.         BNE     'tlok
  2300.         MOVE.l  maxt(pc),d0
  2301.         LSL     #2,d0
  2302.         MOVE.w  d0,!s{size}
  2303.         MOVE.l  #MEMF_PUBLIC|MEMF_CLEAR,d1
  2304.         ALibJsr $C002
  2305.         MOVE.l  d0,!s{tagl}
  2306.         BEQ     'noobj
  2307.         MOVEA.l d0,a1
  2308.         CLR.w   !s{tagp}
  2309. 'tlok:  TST.l   !t{adr}
  2310.         BEQ     'noobj
  2311.         MOVE.w  !s{tagp},d6
  2312.         ADDA.w  d6,a1
  2313.         MOVE.l  #Child,(a1)+
  2314.         MOVE.l  !t{adr},(a1)
  2315.         ADDQ.w  #8,d6
  2316.         MOVE.w  d6,!s{tagp}
  2317.         MOVE.l  #-1,d0
  2318. 'noobj: RTS
  2319.  
  2320. ._createvgroup:
  2321.         MOVEQ   #0,d0
  2322.         TST.l   !s{tagl}
  2323.         BEQ     'noobj
  2324.         LEA     groupclass(pc),a0
  2325.         MOVEA.l !s{tagl},a1
  2326.         !CALLMUI        {MUI_NewObjectA}
  2327.         MOVE.l  d0,!s{adr}
  2328.         BEQ     'noobj
  2329.         MOVE.l  #-1,d0
  2330. 'noobj: RTS
  2331.  
  2332. ._addobjpage:
  2333.         MOVEA.l !s{tagl},a1
  2334.         TST.l   !s{tagl}
  2335.         BNE     'tlok
  2336.         MOVE.l  maxt(pc),d0
  2337.         LSL     #2,d0
  2338.         MOVE.w  d0,!s{size}
  2339.         MOVE.l  #MEMF_PUBLIC|MEMF_CLEAR,d1
  2340.         ALibJsr $C002
  2341.         MOVE.l  d0,!s{tagl}
  2342.         BEQ     'noobj
  2343.         MOVEA.l d0,a1
  2344.         CLR.w   !s{tagp}
  2345. 'tlok:  TST.l   !t{adr}
  2346.         BEQ     'noobj
  2347.         MOVE.w  !s{tagp},d6
  2348.         ADDA.w  d6,a1
  2349.         MOVE.l  #Child,(a1)+
  2350.         MOVE.l  !t{adr},(a1)
  2351.         ADDQ.w  #8,d6
  2352.         MOVE.w  d6,!s{tagp}
  2353.         MOVE.l  #-1,d0
  2354. 'noobj: RTS
  2355.  
  2356. ._createpage:
  2357.         MOVEQ   #0,d0
  2358.         TST.l   !s{tagl}
  2359.         BEQ     'noobj
  2360.         MOVEA.l !s{tagl},a1
  2361.         MOVE.w  !s{tagp},d6
  2362.         ADDA.w  d6,a1
  2363.         MOVE.w  #20,d0
  2364.         LSL.w   #2,d0
  2365.         MOVE.w  d0,!s{spesize}
  2366.         MOVE.l  #MEMF_PUBLIC|MEMF_CLEAR,d1
  2367.         ALibJsr $c002
  2368.         MOVE.l  d0,!s{special}
  2369.         BEQ     'noobj
  2370.         MOVEA.l d0,a0
  2371.         SUBQ    #1,d7
  2372. 'loop:  MOVE.l  -(a2),d1
  2373.         MOVE.l  -(a2),d0
  2374.         ALibJsr $cf01
  2375.         MOVE.l  d0,(a0)+
  2376.         DBF     d7,'loop
  2377.         MOVE.l  #0,(a0)+
  2378.         MOVE.l  #MUIA_Register_Titles,(a1)+
  2379.         MOVE.l  !s{special},(a1)+
  2380.         ADDQ.w  #8,d6
  2381.         MOVE.w  d6,!s{tagp}
  2382.         LEA     registerclass(pc),a0
  2383.         MOVEA.l !s{tagl},a1
  2384.         !CALLMUI        {MUI_NewObjectA}
  2385.         MOVE.l  d0,!s{adr}
  2386.         BEQ     'noobj
  2387.         MOVE.l  #-1,d0
  2388. 'noobj: RTS
  2389.  
  2390. _createpagea:
  2391.         MOVEQ   #0,d0
  2392.         TST.l   !s{tagl}
  2393.         BEQ     'noobj
  2394.         MOVE.l  d1,d3
  2395.         MOVE.l  #20,d0
  2396.         LSL     #2,d0
  2397.         MOVE.w  d0,!s{spesize}
  2398.         MOVE.l  #MEMF_PUBLIC|MEMF_CLEAR,d1
  2399.         ALibJsr $c002
  2400.         MOVE.l  d0,!s{special}
  2401.         BEQ     'noobj
  2402.         MOVEA.l d0,a0
  2403.         MOVEA.l d3,a2
  2404. 'loop:  MOVE.l  (a2)+,a1
  2405.         MOVE.l  a1,d0
  2406.         MOVEQ   #-1,d1
  2407. 'loops: ADDQ    #1,d1
  2408.         TST.b   (a1)+
  2409.         BNE     'loops
  2410.         ALibJsr $cf01
  2411.         MOVE.l  d0,(a0)+
  2412.         BNE     'loop
  2413.         MOVEA.l !s{tagl},a1
  2414.         MOVE.w  !s{tagp},d6
  2415.         ADDA.w  d6,a1
  2416.         MOVE.l  #0,(a0)+
  2417.         MOVE.l  #MUIA_Register_Titles,(a1)+
  2418.         MOVE.l  !s{special},(a1)+
  2419.         ADDQ.w  #8,d6
  2420.         MOVE.w  d6,!s{tagp}
  2421.         LEA     registerclass(pc),a0
  2422.         MOVEA.l !s{tagl},a1
  2423.         !CALLMUI        {MUI_NewObjectA}
  2424.         MOVE.l  d0,!s{adr}
  2425.         BEQ     'noobj
  2426.         MOVE.l  #-1,d0
  2427. 'noobj: RTS
  2428.  
  2429.  
  2430.  
  2431. .
  2432. ._insertsingle:
  2433.         MOVEQ   #0,d0
  2434.         TST.l   !s{adr}
  2435.         BEQ     'noobj
  2436.         MOVE.l  d1,d4
  2437.         CMP.w   #1,d7
  2438.         BGT     'col
  2439.         MOVE.l  -(a2),d1
  2440.         MOVE.l  -(a2),d0
  2441.         ALibJsr $cf01
  2442.         MOVE.l  d0,d2
  2443.         BRA     'nocol
  2444. 'col:   MOVE.w  d7,d0
  2445.         ADDQ    #1,d0
  2446.         LSL     #2,d0
  2447.         MOVE.l  #MEMF_PUBLIC|MEMF_CLEAR,d1
  2448.         ALibJsr $c002
  2449.         MOVE.l  d0,d2
  2450.         BEQ     'noobj
  2451.         MOVEA.l d2,a0
  2452.         SUBQ    #1,d7
  2453. 'loop:  MOVE.l  -(a2),d1
  2454.         MOVE.l  -(a2),d0
  2455.         ALibJsr $cf01
  2456.         MOVE.l  d0,(a0)+
  2457.         DBF     d7,'loop
  2458.         MOVE.l  #0,(a0)+
  2459. 'nocol: MOVE.l  !s{adr},d0
  2460.         LEA     args(pc),a0
  2461.         MOVE.l  a0,d1
  2462.         MOVE.l  #MUIM_List_InsertSingle,(a0)+
  2463.         MOVE.l  d2,(a0)+
  2464.         MOVE.l  d4,(a0)+
  2465.         MOVE.l  #0,(a0)+
  2466.         BSR     _domethoda
  2467. 'noobj: RTS
  2468.  
  2469.  
  2470.  
  2471. _insertsinglea:
  2472.         MOVEQ   #0,d0
  2473.         TST.l   !s{adr}
  2474.         BEQ     'noobj
  2475.         MOVE.l  d1,d4
  2476.         MOVE.l  !s{adr},d0
  2477.         LEA     args(pc),a0
  2478.         MOVE.l  a0,d1
  2479.         MOVE.l  #MUIM_List_InsertSingle,(a0)+
  2480.         MOVE.l  d2,(a0)+
  2481.         MOVE.l  d4,(a0)+
  2482.         MOVE.l  #0,(a0)+
  2483.         BSR     _domethoda
  2484. 'noobj: RTS
  2485.  
  2486. ._removesingle:
  2487.         MOVEQ   #0,d0
  2488.         MOVE.l  !s{adr},d0
  2489.         BEQ     'noobj
  2490.         LEA     args(pc),a0
  2491.         MOVE.l  a0,d2
  2492.         MOVE.l  #MUIM_List_Remove,(a0)+
  2493.         MOVE.l  d1,(a0)+
  2494.         MOVE.l  #0,(a0)+
  2495.         MOVE.l  d2,d1
  2496.         BSR     _domethoda
  2497. 'noobj: RTS
  2498.  
  2499. ._redrawsingle:
  2500.         MOVEQ   #0,d0
  2501.         MOVE.l  !s{adr},d0
  2502.         BEQ     'noobj
  2503.         LEA     args(pc),a0
  2504.         MOVE.l  a0,d2
  2505.         MOVE.l  #MUIM_List_Redraw,(a0)+
  2506.         MOVE.l  d1,(a0)+
  2507.         MOVE.l  #0,(a0)+
  2508.         MOVE.l  d2,d1
  2509.         BSR     _domethoda
  2510. 'noobj: RTS
  2511.  
  2512. ._listtitle:
  2513.         MOVE.l  a6,_IntuiBase
  2514.         MOVEQ   #0,d0
  2515.         TST.l   !s{adr}
  2516.         BEQ     'noobj
  2517.         CMP.w   #1,d7
  2518.         BGT     'col
  2519.         MOVE.l  -(a2),d1
  2520.         MOVE.l  -(a2),d0
  2521.         ALibJsr $cf01
  2522.         MOVE.l  d0,d2
  2523.         MOVE.l  !s{adr},d0
  2524.         MOVE.l  #MUIA_List_Title,d1
  2525.         BSR     _set
  2526.         BRA     'noobj
  2527. 'col:   MOVEA.l !s{spe2},a0
  2528.         ADDA.l  #24,a0
  2529.         SUBQ    #1,d7
  2530. 'loop:  MOVE.l  -(a2),d1
  2531.         MOVE.l  -(a2),d0
  2532.         ALibJsr $cf01
  2533.         MOVE.l  d0,(a0)+
  2534.         DBF     d7,'loop
  2535.         MOVE.l  #0,(a0)+
  2536.         MOVE.l  !s{adr},d0
  2537.         MOVE.l  #MUIA_List_Title,d1
  2538.         MOVEQ.l #1,d2
  2539.         BSR     _set
  2540. 'noobj: RTS
  2541.  
  2542. _listtitlea:
  2543.         MOVE.l  a6,_IntuiBase
  2544.         MOVEQ   #0,d0
  2545.         TST.l   !s{adr}
  2546.         BEQ     'noobj
  2547.         MOVEA.l !s{spe2},a0
  2548.         ADDA.l  #24,a0
  2549.         MOVEA.l d1,a1
  2550. 'loop:  MOVE.l  (a1)+,(a0)+
  2551.         BNE     'loop
  2552.         MOVE.l  #0,(a0)+
  2553.         MOVE.l  !s{adr},d0
  2554.         MOVE.l  #MUIA_List_Title,d1
  2555.         MOVEQ.l #1,d2
  2556.         BSR     _set
  2557. 'noobj: RTS
  2558.  
  2559.  
  2560. .
  2561. ._muiset:
  2562.         TST     !s{adr}
  2563.         BEQ     'noobj
  2564.         MOVEA.l !s{adr},a0
  2565.         LEA     args(pc),a1
  2566.         MOVE.l  a1,d0
  2567.         SUBQ    #1,d7
  2568. 'loop:  MOVE.l  -(a2),(a1)+
  2569.         DBF     d7,'loop
  2570.         MOVE.l  #0,(a1)+
  2571.         MOVEA.l d0,a1
  2572.         JSR     -648(a6)
  2573. 'noobj: RTS
  2574.  
  2575. _muiseta:
  2576.         TST     !s{adr}
  2577.         BEQ     'noobj
  2578.         MOVEA.l !s{adr},a0
  2579.         MOVEA.l d1,a1
  2580.         JSR     -648(a6)
  2581. 'noobj: RTS
  2582.  
  2583. ._muiget:
  2584.         MOVEA.l !s{adr},a0
  2585.         MOVE.l  d1,d0
  2586.         LEA     stp(pc),a1
  2587.         JSR     -654(a6)
  2588.         MOVE.l  stp(pc),d0
  2589. 'noobj: RTS
  2590.  
  2591. .
  2592. ._dmethod:
  2593.         MOVEQ   #0,d0
  2594.         TST.l   !s{adr}
  2595.         BEQ     'noobj
  2596.         MOVE.l  !s{adr},d0
  2597.         LEA     args(pc),a1
  2598.         MOVE.l  a1,d3
  2599.         MOVE.l  d1,(a1)+
  2600.         SUBQ    #1,d7
  2601. 'loop:  MOVE.l  -(a2),(a1)+
  2602.         DBF     d7,'loop
  2603.         MOVE.l  d3,d1
  2604.         BSR     _domethoda
  2605. 'noobj: RTS
  2606.  
  2607. _dmethoda:
  2608.         MOVEQ   #0,d0
  2609.         TST.l   !s{adr}
  2610.         BEQ     'noobj
  2611.         MOVE.l  !s{adr},d0
  2612.         LEA     args(pc),a1
  2613.         MOVE.l  a1,d3
  2614.         MOVE.l  d1,(a1)+
  2615.         MOVE.l  d2,a2
  2616. 'loop:  MOVE.l  (a2)+,(a1)+
  2617.         BNE     'loop
  2618.         MOVE.l  d3,d1
  2619.         BSR     _domethoda
  2620. 'noobj: RTS
  2621.  
  2622. ._notify:
  2623.         TST.l   !s{adr}
  2624.         BEQ     'noobj
  2625.         TST.l   !u{adr}
  2626.         BEQ     'noobj
  2627.         LEA     args(pc),a1
  2628.         MOVE.l  a1,d3
  2629.         MOVE.l  #MUIM_Notify,(a1)+
  2630.         MOVE.l  d1,(a1)+
  2631.         MOVE.l  d2,(a1)+
  2632.         MOVE.l  !u{adr},(a1)+
  2633.         MOVE.w  #0,(a1)+
  2634.         MOVE.w  d7,(a1)+
  2635.         SUBQ    #1,d7
  2636. 'loop:  MOVE.l  -(a2),(a1)+
  2637.         DBF     d7,'loop
  2638.         MOVE.l  d3,d1
  2639.         MOVE.l  !s{adr},d0
  2640.         BSR     _domethoda
  2641. 'noobj: RTS
  2642.  
  2643.  
  2644. _notifya:
  2645.         TST.l   !s{adr}
  2646.         BEQ     'noobj
  2647.         TST.l   !u{adr}
  2648.         BEQ     'noobj
  2649.         LEA     args(pc),a1
  2650.         MOVE.l  a1,d3
  2651.         MOVE.l  #MUIM_Notify,(a1)+
  2652.         MOVE.l  d1,(a1)+
  2653.         MOVE.l  d2,(a1)+
  2654.         MOVE.l  !u{adr},(a1)+
  2655.         MOVEA.l d4,a2
  2656.         MOVEQ   #-1,d7
  2657. 'loop1: ADDQ    #1,d7
  2658.         TST.l   (a2)+
  2659.         BNE     'loop1
  2660.         MOVE.l  d7,(a1)+
  2661.         MOVEA.l d4,a2
  2662. 'loop2: MOVE.l  (a2)+,(a1)+
  2663.         BNE     'loop2
  2664.         MOVE.l  d3,d1
  2665.         MOVE.l  !s{adr},d0
  2666.         BSR     _domethoda
  2667. 'noobj: RTS
  2668.  
  2669.  
  2670. ._event:
  2671.         TST.l   appaddr
  2672.         BEQ     'noapp
  2673.         MOVE.l  appaddr(pc),d0
  2674.         LEA     args(pc),a0
  2675.         MOVE.l  a0,d1
  2676.         MOVE.l  #MUIM_Application_NewInput,(a0)+
  2677.         LEA     sigs(pc),a1
  2678.         MOVE.l  a1,(a0)+
  2679.         BSR     _domethoda
  2680. 'noapp: RTS
  2681.  
  2682. ._waitevent:
  2683.         TST.l   appaddr
  2684.         BEQ     'noapp
  2685.         MOVE.l  sigs(pc),d0
  2686.         BEQ     'nosigs
  2687.         MOVE.l  4,a6
  2688.         JSR     -318(a6)
  2689. 'nosigs:BRA     _event
  2690. 'noapp: RTS
  2691.  
  2692.  
  2693. .
  2694. ._freeobj:
  2695.         MOVEM.l d0-d1/a1,-(a7)
  2696.         MOVE.l  !s{size},d0
  2697.         BEQ     'notl
  2698.         MOVE.l  !s{tagl},d1
  2699.         BEQ     'notl
  2700.         MOVEA.l d1,a1
  2701.         ALibJsr $c003
  2702. 'notl:  MOVE.l  !s{spesize},d0
  2703.         BEQ     'nospe
  2704.         MOVE.l  !s{special},d1
  2705.         BEQ     'nospe
  2706.         MOVEA.l d1,a1
  2707.         ALibJsr $c003
  2708. 'nospe: MOVE.l  !s{spe2size},d0
  2709.         BEQ     'nospe2
  2710.         MOVE.l  !s{spe2},d1
  2711.         BEQ     'nospe2
  2712.         MOVEA.l d1,a1
  2713.         ALibJsr $c003
  2714. 'nospe2:MOVEM.l (a7)+,d0-d1/a1
  2715.         RTS
  2716.  
  2717.  
  2718.  
  2719. _domethoda: ;DoMethodA(obj,msg)(d0/d1)
  2720.         TST.l   d0
  2721.         BEQ.b   cmnullreturn
  2722.         MOVE.l  d0,a2
  2723.         MOVE.l  d1,a1
  2724.         MOVE.l  -4(a2),a0
  2725. cminvoke:
  2726.         PEA.l   cmreturn(pc)
  2727.         MOVE.l  8(a0),-(a7)
  2728.         RTS
  2729.  
  2730. cmnullreturn:
  2731.         MOVEQ   #0,d0
  2732. cmreturn:
  2733.         RTS
  2734.  
  2735. _set:   ;set(obj,attr,value)(d0/d1/d2)
  2736.         MOVEM.l a0-a1/a6,-(a7)
  2737.         MOVEA.l _IntuiBase(pc),a6
  2738.         MOVEA.l d0,a0
  2739.         LEA     args(pc),a1
  2740.         MOVE.l  a1,d0
  2741.         MOVE.l  d1,(a1)+
  2742.         MOVE.l  d2,(a1)+
  2743.         MOVE.l  #0,(a1)+
  2744.         MOVE.l  d0,a1
  2745.         JSR     -648(a6)
  2746.         MOVEM.l (a7)+,a0-a1/a6
  2747.         RTS
  2748.  
  2749.         Even
  2750.  
  2751. DHook:
  2752.         Dc.l  $b3fc0000,$00006706
  2753.         Dc.l  $24d966fc,$600843fa
  2754.         Dc.l  $000824d9,$66fc4e75
  2755.         Dc.l  0,0
  2756.  
  2757.         Even
  2758.  
  2759. _MUIBase:   Dc.l  0
  2760. _IntuiBase: Dc.l  0
  2761.  
  2762. s0:       Dc.l  0
  2763. s1:       Dc.l  0
  2764. s2:       Dc.l  0
  2765.  
  2766. tits:     Dc.l  0
  2767.  
  2768. stp:      Dc.l  0
  2769.  
  2770. sigs:     Dc.l  0
  2771.  
  2772. str:      Dc.l  0,0
  2773.  
  2774. args:     Dcb.l 40,0
  2775. temp:     Dcb.l 20,0
  2776.  
  2777. Even
  2778.  
  2779. appstruct:
  2780. appaddr:        Dc.l    0
  2781. appkind:        Dc.w    4
  2782. apptags:        Dc.l    0
  2783. apptap:         Dc.w    0
  2784. appsize:        Dc.w    160
  2785. appspecial:     Dc.l    0
  2786. appspesize:     Dc.w    0
  2787.  
  2788. Even
  2789.  
  2790.  
  2791. ;************************************************************
  2792. ;*                        ERRORS                            *
  2793. ;************************************************************
  2794. .
  2795. .errors:
  2796. err1:   MOVEQ.l #1,d0
  2797.         TRAP    #0
  2798.  
  2799. Even
  2800.  
  2801. initerr:
  2802.         MOVE.l  #MUI_INIT_ERR,d0
  2803.         TRAP    #0
  2804.  
  2805. Even
  2806.  
  2807. MUI_INIT_ERR:
  2808.         Dc.b    "MUILib INIT ERROR!!!",0
  2809.         Even
  2810.  
  2811.  
  2812. ;************************************************************
  2813. ;*                         DATAS                            *
  2814. ;************************************************************
  2815.  
  2816. maxt:           Dc.l    31
  2817.  
  2818. cenc:           Dc.b    $1B,$63,$00,$1B
  2819.  
  2820.         Even
  2821.  
  2822. appclass:       Dc.b    "Application.mui",0
  2823. winclass:       Dc.b    "Window.mui",0
  2824. groupclass:     Dc.b    "Group.mui",0
  2825. imageclass:     Dc.b    "Image.mui",0
  2826. rectangleclass: Dc.b    "Rectangle.mui",0
  2827. stringclass:    Dc.b    "String.mui",0
  2828. textclass:      Dc.b    "Text.mui",0
  2829. cycleclass:     Dc.b    "Cycle.mui",0
  2830. radioclass:     Dc.b    "Radio.mui",0
  2831. sliderclass:    Dc.b    "Slider.mui",0
  2832. registerclass:  Dc.b    "Register.mui",0
  2833. listclass:      Dc.b    "List.mui",0
  2834. listviewclass:  Dc.b    "Listview.mui",0
  2835.  
  2836.         Even
  2837.  
  2838.